home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / rbbs_pc / node2src.zip / RBBS-PC.BAS < prev    next >
BASIC Source File  |  1990-12-31  |  177KB  |  5,126 lines

  1. 3 ' $linesize: 132
  2. 4 ' $title: 'RBBS CPC17.3, Copyright 1990 by D. Thomas Mack'
  3. 5 ' WARNING !!! DO NOT CHANGE, BYPASS OR Remove LINES 3-29
  4. 9 'by D. Thomas Mack, 39 Cranbury Drive, Trumbull, CT 06611 (up to 16)
  5.    '  Jon Martin, 4396 N Prairie Willow Ct, Concord, CA 94521 (up to 17.2B)
  6.    '  Ken Goosens, 5020 Portsmouth Road, Fairfax, VA 22032 (up to 17.3)
  7. 13 '
  8. 14 ' *******************************NOTICE*************************************
  9. 15 ' *  A limited license is granted to all users of this program and it's    *
  10. 16 ' *  companion program, CONFIG (version 17.3), to make copies of this      *
  11. 17 ' *  program and distribute the copies to other users, on the following    *
  12. 18 ' *  conditions:                                                           *
  13. 19 ' *    1.   The notices contained in lines 3 through 29 of the program     *
  14. 20 ' *         are not altered, bypassed, or removed.                         *
  15. 21 ' *    2.   The program is not to be distributed to others in modified     *
  16. 22 ' *         form (i.e. the line numbers must remain the same).             *
  17. 23 ' *    3.   No fee is to be charged (or any other consideration received)  *
  18. 24 ' *         for copying or distributing these programs without an express  *
  19. 25 ' *         written agreement with D. Thomas Mack, The Second Ring, 39     *
  20. 26 ' *         Cranbury Drive, Trumbull, Conneticut 06611                     *
  21. 27 ' *                                                                        *
  22. 28 ' *       Copyright (c) 1983-1990 D. Thomas Mack, The Second Ring          *
  23. 29 ' **************************************************************************
  24.    '
  25.    ' $INCLUDE: 'RBBS-VAR.BAS'
  26.    '
  27.    ' $SUBTITLE: 'Main-line RBBS-PC Program'
  28.     ZCrLf$ = CHR$(13) + CHR$(10)
  29.     WasJ = 60
  30.     DIM ZOptSec(WasJ)
  31.     ZConfigFileName$ = "RBBS-PC.DEF"
  32.     CALL GetCommand (ZDebug,NetTime$,ZNetBaud$,ZNetReliable$)
  33.     ZSubParm = -62
  34.     ZBulletinMenu$ = ""
  35.     CALL ReadDef (ZConfigFileName$)
  36.     IF ZErrCode > 0 THEN _
  37.        GOTO 31
  38.     CALL MLInit (1)
  39.     ZSubParm = -9
  40.     CALL Carrier
  41.     'IF ZSubParm THEN _
  42.     '   CALL CopyRight
  43.     GOTO 100
  44. 31  ZSnoop = ZTrue
  45.     CALL PScrn ("Configuration "+ZConfigFileName$+" missing or improper format") : _
  46.     GOTO 204
  47. 100 CLEAR,,ZSizeOfStack
  48.     DEF SEG                            ' Point to BASIC
  49.     WIDTH 80                           ' Set Screen Width
  50.     KEY OFF                            ' Line 25 turned off
  51. ' ********************* Variable Definitions *******************************
  52. 102 ZMsgDim = 99
  53.     WasMM = 999
  54.     WasBX = 75
  55.     WasJ = 60
  56.     REDIM ZOptSec(WasJ)
  57.     DIM ZWorkAra$(WasJ)
  58.     DIM ZGSRAra$(WasJ)
  59.     DIM ZCategoryName$(WasBX),ZCategoryCode$(WasBX),ZCategoryDesc$(WasBX)
  60.     DIM ZOutTxt$(ZMsgDim)                      ' Message line table
  61.     DIM ZUserIn$(ZMsgDim)                      ' Message line table
  62.     DIM ZMsgPtr(WasMM,2)                       ' Message pointers
  63.     CALL VarInit
  64. 105 ZVersionID$ = "17.32 HBMpl 123190"
  65. 106 CALL GetCommand (ZDebug,NetTime$,ZNetBaud$,ZNetReliable$)
  66.     ZSubParm = 1
  67.     CALL ReadDef (ZConfigFileName$)
  68.     IF ZErrCode > 0 THEN _
  69.        GOTO 31
  70.     REDIM ZWorkAra$(ZMaxWorkVar)
  71.     REDIM ZGSRAra$(ZMaxWorkVar)
  72.     ZUseTPut = (ZUpperCase OR ZXOnXOff)
  73.     OrigUpgradeSec = ZAutoUpgradeSec
  74.     ZOrigCallers$ = ZCallersFile$
  75.     ZOrigMsgFile$ = ZMainMsgFile$
  76.     ZOrigUserFile$ = ZMainUserFile$
  77.     OrigMainSec = ZMinLogonSec
  78.     ZOrigSysopFN$ = ZSysopFirstName$
  79.     ZOrigSysopLN$ = ZSysopLastName$
  80.     ZExpertUser = ZExpertUserDef
  81.     ZPromptBell = ZPromptBellDef
  82.     CALL BreakFileName (ZOrigMsgFile$,Drive$,OrigMsgName$,ZWasY$,ZFalse)
  83.     IF OrigMsgName$ = "MESSAGES" THEN _
  84.        OrigMsgName$ = "MAIN" _
  85.     ELSE IF RIGHT$(OrigMsgName$,1) = "M" THEN _
  86.             OrigMsgName$ = LEFT$(OrigMsgName$,LEN(OrigMsgName$)-1)
  87.     ConfFileName$ = OrigMsgName$
  88.     OrigNewsFileName$ = ZWelcomeFileDrvPath$ + _
  89.               OrigMsgName$ + ".NWS"
  90.     ZNewsFileName$ = OrigNewsFileName$
  91.     IF ZNetMail$ <> "NONE" AND VAL(NetTime$) > 0 THEN _
  92.        ZLimitMinsPerSession = VAL(NetTime$)
  93.     IF ZNetMail$ <> "NONE" AND VAL(ZNetBaud$) > 0 THEN _
  94.        ZExpectActiveModem = ZTrue : _
  95.        IF NOT ZKeepInitBaud THEN _
  96.           ZModemInitBaud$ = ZNetBaud$
  97. 108 CALL BreakFileName (ZCallersFile$,Drive$,WasX$,ZWasY$,ZTrue)
  98.     ZCallersFilePrefix$ = WasX$
  99.     ZNodeWorkDrvPath$ = Drive$
  100.     ZArcWork$ = ZNodeWorkDrvPath$ + _
  101.                 "ARCWORK" + _
  102.                 ZNodeFileID$ + _
  103.                 ".DEF"
  104.     IF ZUseBASICWrites THEN _
  105.        ZLocalBksp$ = ZBackArrow$ _
  106.     ELSE ZLocalBksp$ = ZBackSpace$
  107.     SysopFullName$ = LEFT$(ZSysopFirstName$ + " " + ZSysopLastName$ + "  ",22)
  108.     ZFastFileSearch = ZFalse
  109.     CALL FindIt (ZFastFileList$)
  110.     IF ZOK THEN _
  111.        CALL FindIt (ZFastFileLocator$) : _
  112.        ZFastFileSearch = ZTrue : _
  113.        CALL BreakFileName (ZFastFileList$, Drive$,WasX$,ZWasY$,ZTrue) : _
  114.        ZFileName$ = Drive$ + WasX$ + "T" + ZWasY$ : _
  115.        CALL FindIt (ZFileName$) : _
  116.        IF ZOK THEN _
  117.           CALL OpenRSeq (ZFileName$, WasX, WasY, 72) : _
  118.           FIELD 2, 72 AS IndexRec$ : _
  119.           GET 2, 1 : _
  120.           ZFastTabs$ = IndexRec$ : _
  121.           CLOSE 2
  122. '
  123. ' *****  INITIALIZE NetBIOS INTERFACE   ****
  124. '
  125.    IF ZNetworkType = 6 AND NOT SubBoard THEN _
  126.       CALL InitIBM
  127. '
  128. ' *****  ESTABLISH NEXT CALLERS FILE RECORD AVAILABLE   ***
  129. '
  130.     CALL SetCall
  131. 112 IF NOT SubBoard THEN _
  132.        ZLocalUser = ZTrue : _
  133.        ZOutTxt$ = ZColorReset$ : _
  134.        ZSubParm = 1 : _
  135.        CALL TPut : _
  136.        ZLocalUser = ZFalse
  137.     ZUpldDriveFile$ = RIGHT$(ZDnldDrives$,1)+":FREESPAC.UPL"
  138.     MinsPerSessionDef = ZMinsPerSession
  139.     MaxPerDayDef = ZMaxPerDay
  140. '
  141. ' *****  TEST FOR MESSAGE FILE PRESENT (Abort IF NOT PRESENT)  ****
  142. '
  143. 135 IF ZCurDef$ = ZOrigCnfg$ THEN _
  144.        ZActiveMessageFile$ = ZMainMsgFile$ : _
  145.        ZActiveUserFile$ = ZMainUserFile$
  146.     GOSUB 4910
  147.     IF ZConfMode THEN _
  148.        GOTO 150
  149.     ZLocalUserMode = (RIGHT$(ZComPort$,1) < "1")
  150.     GET 1,ZNodeRecIndex
  151.     ZWasY$ = MID$(ZMsgRec$,77,2)
  152.     CALL UnPackDate (ZWasY$,WasX,WasL,WasI,ZOldDate$)
  153.     ZOldDate$ = LEFT$(ZOldDate$,6) + MID$(STR$(WasX),2)
  154.     ZHourMinToDropToDos = - (ZHourMinToDropToDos > 0) * ZHourMinToDropToDos
  155.     Hour = INT(ZHourMinToDropToDos / 100)
  156.     WasMN = ZHourMinToDropToDos - Hour * 100
  157.     ZTimeToDropToDos! = Hour * 3600 + WasMN * 60!             ' KK030901
  158. '
  159. ' ******  TEST FOR TIMED EXIT ACTIVE   *****
  160. '
  161. 140 IF ZHourMinToDropToDos > 0 AND _
  162.        ZOldDate$ <> DATE$ AND _
  163.        TIMER >= ZTimeToDropToDos! AND _
  164.        TIMER < 86340 THEN _
  165.           GOTO 206
  166. '
  167. ' **** GET CURRENT STATUS OF SYSOP AVAIL, SYSOP ANNOY, SYSOP NEXT, & PRINTER
  168. '
  169. 150 IF SubBoard THEN _
  170.        GOSUB 12987 : _
  171.        GOSUB 5135 : _
  172.        GOTO 170
  173.     ZSysopAvail = VAL(MID$(ZMsgRec$,32,2))
  174.     ZSysopAnnoy = VAL(MID$(ZMsgRec$,34,2))
  175.     ZSysopNext = VAL(MID$(ZMsgRec$,36,2))
  176.     MID$(ZMsgRec$,36,2) = STR$(ZFalse)
  177.     ZPrinter = VAL(MID$(ZMsgRec$,38,2))
  178.     IF ZTurnPrinterOff THEN _
  179.        ZPrinter = ZFalse
  180.     ZExitToDoors = (MID$(ZMsgRec$,40,2) = "-1" AND ZNetBaud$ = "")
  181.     ZEightBit = VAL(MID$(ZMsgRec$,42,2))
  182.     ZBPS = VAL(MID$(ZMsgRec$,44,2))
  183.     ZSnoop = VAL(MID$(ZMsgRec$,58,2))
  184.     MID$(ZMsgRec$,57,1) = "I"
  185.     ZPrivateDoor = (MID$(ZMsgRec$,72,2) = "-1")
  186.     IF ZPrivateDoor THEN _
  187.        ZHasPrivDoor = ZTrue
  188.     MID$(ZMsgRec$,72,2) = STR$(ZFalse)
  189.     ZLocalUser = (MID$(ZMsgRec$,101,2) = ZCarriageReturn$+ZCarriageReturn$) ' KG030601
  190.     IF ZExitToDoors OR ZPrivateDoor THEN _
  191.        ZHasDoored = ZTrue : _
  192.        TurboLogon = ZTrue
  193.     PUT 1,ZNodeRecIndex
  194.     GOSUB 12985
  195. '
  196. ' *****  INITIALIZE VOICE SYNTHESIZER   ****
  197. '
  198. '    CALL Talk (Init,ZOutTxt$)  'Pe 01/03/90
  199. '
  200. ' *****  TEST FOR MULTI LINK PRESENT IF NOT COMPAQ COMPUTER   ****
  201. '
  202. 160 CALL MLInit (4)
  203. 170 FOR FunctionKeyIndex = 1 TO 10
  204.        KEY FunctionKeyIndex,""
  205.     NEXT
  206.     CALL LoadNew (ZMsgPtr())
  207. '
  208. ' ******  INITIALIZE FILE MANAGEMENT SYSTEM, CHECK FOR LOCAL BBS MODE
  209. '
  210. 175 GOSUB 5344
  211.     CALL CountLines (MaxEntries)
  212.     REDIM ZCategoryName$(MaxEntries),ZCategoryCode$(MaxEntries),_
  213.           ZCategoryDesc$(MaxEntries) : _
  214.     CALL InitFMS (ZCategoryName$(),ZCategoryCode$(), _
  215.                   ZCategoryDesc$(),ZNumCategories)
  216.     ZMaxMsgLines = ZMaxMsgLinesDef
  217.     ZLocalUser = (ZLocalUser OR ZLocalUserMode)
  218.     IF (NOT ZLocalUser) AND (NOT SubBoard) THEN _
  219.        CALL OpenCom (ZModemInitBaud$,",N,8,1")
  220.     IF NOT SubBoard THEN _
  221.        CALL SetEcho (ZDefaultEchoer$)
  222.     ZNodeWorkFile$ = ZNodeWorkDrvPath$ + _
  223.                       "NODE" + _
  224.                       ZNodeFileID$ + _
  225.                       "WRK"
  226.     ZSecsPerSession! = ZMinsPerSession * 60!       ' KK030901
  227.     IF NOT ZLocalUserMode THEN _
  228.        IF NOT ZExitToDoors THEN _
  229.            GOTO 180 _
  230.        ELSE IF NOT ZLocalUser THEN _
  231.                GOTO 180
  232.     ZLocalUser = ZTrue
  233.     ZBPS = -6
  234.     ZBaudTest! = 9600
  235.     ZEightBit = ZTrue
  236.     ZSnoop = ZTrue
  237.     IF ZExitToDoors THEN _
  238.        CALL AMorPM : _
  239.        CALL ReadProf : _
  240.        GOTO 410
  241.     GOSUB 178
  242.     GOTO 345
  243. '178 IF SubBoard THEN _
  244. '       IF OrigFirstName$ = ZSysopFirstName$ AND _                 'DGS-ALSMod
  245. '          ZLastName$ = ZSysopLastName$ THEN _
  246. '             RETURN 832 _
  247. '       ELSE RETURN 790
  248. '    RETURN
  249. 178 IF SubBoard THEN _
  250.        IF ZFirstName$ = ZSysopFirstName$ AND _
  251.           ZLastName$ = ZSysopLastName$ THEN _
  252.              RETURN 832 _
  253.        ELSE RETURN 800          'was 790 but caused problems
  254.     RETURN
  255. 180 ZSubParm = 2
  256.     CALL Line25
  257.     GOSUB 178
  258. '
  259. ' ******  WAIT FOR THE PHONE TO RING AND ANSWER IT   ****
  260. '
  261.     ZSubParm = 1
  262. 200 ZToggleOnly = ZTrue
  263.     CALL AnswerIt
  264.     GET 1,ZNodeRecIndex
  265.     ZSnoop = VAL(MID$(ZMsgRec$,58,2))
  266.     ZToggleOnly = ZFalse
  267.     IF ZErrCode > 1 THEN _
  268.        GOTO 13000
  269.     IF ZSubParm < 0 THEN _
  270.        GOTO 202
  271.     ON ZSubParm GOTO   410, _   '  1 = ANSWERED PHONE & CARRIER FOUND
  272.                        330, _   '  2 = CARRIER FOUND BEFORE ANSWERING
  273.                        822, _   '  3 = Sysop GETS SYSTEM NEXT
  274.                      10595, _   '  4 = ANSWERED PHONE BUT NO CARRIER
  275.                      13540, _   '  5 = NOT USED
  276.                        202, _   '  6 = LOCAL SYSOP KEY PRESSED
  277.                        206, _   '  7 = TIME TO DROP TO DOS
  278.                      13538      '  8 = No CALLS! TIME TO RECYCLE
  279. 202 ZFF = -ZSubParm
  280.     ON ZFF GOTO 10595, _   '  -1 = CARRIER DROPPED
  281.                  4770, _   '  -2 = SYSOP INITIATED CHAT
  282.                   205, _   '  -3 = FORCE SYSTEM TO ANSWER THE PHONE
  283.                   204, _   '  -4 = EXIT TO DOS IMMEDEATELY
  284.                   203, _   '  -5 = EXIT TO DOS AFTER CLEAN-UP
  285.                 10698, _   '  -6 = INDICATE ACCESS IS DENIED AND LOGOFF USER
  286.                 10620      '  -7 = UPDATE CALLERS FILE AND LOGOFF USER
  287. 203 CALL MLInit(3)
  288. 204 SYSTEM
  289. 205 ZSubParm = 4
  290.     GOTO 200
  291. 206 CALL TimedOut
  292.     GOTO 203
  293. 330 CALL Carrier
  294.     IF ZSubParm = -1 THEN _
  295.        GOTO 10595
  296.     CALL EofComm (Char)
  297.     IF Char = -1 THEN _
  298.        GOTO 335
  299.     CALL FlushCom (ZWasDF$)
  300.     IF ZSubParm = -1 THEN _
  301.         GOTO 10595
  302.     GOTO 330
  303. 335 ZExitToDoors = ZFalse
  304.     ZPrivateDoor = ZFalse
  305.     IF ZWasCL <> 1 THEN _
  306.        LOCATE 22,34
  307.     WasD$ ="CONNECT" + _
  308.         STR$(ZBaudTest!) + _
  309.         "     "
  310.     GOSUB 1315
  311. '
  312. ' *****  DISPLAY WELCOME LINE  ****
  313. '
  314. 345 LOCATE 24,1
  315.     CALL AMorPM
  316.     ZUserLogonTime! = TIMER
  317.     ZTimeLoggedOn$ = TIME$
  318.     ZLinesPrinted = 0
  319.     ZExpertUserDef = ZExpertUser
  320.     ZExpertUser = ZFalse
  321.     CALL SetExpert
  322.     ZOutTxt$ = ""
  323.     IF NodesInSystem > 1 THEN _
  324.        ZOutTxt$ = " - Node " + ZNodeID$
  325.     IF ZReliableMode THEN _
  326.        ZOutTxt$ = ZOutTxt$ + " (Reliable Connect)"
  327.     CALL QuickTPut1 ("Welcome to " + ZRBBSName$ + ZOutTxt$)
  328.     ZTestParity = ZTrue
  329.     ZStopInterrupts = ZTrue
  330.     ZFileName$ = ZPreLog$
  331.     CALL FlushCom (WasX$)
  332.     ZCommPortStack$ = ""
  333. 346 GOSUB 466
  334.     IF ZSubParm = -1 THEN _
  335.        GOTO 13540
  336.     ZFF = ZFalse
  337. '********** Delete all the files in ARKVIEW.PATH$ **********
  338. '***********************************************************
  339. 'First create a Dummy file so the directory is not empty. It
  340. 'avoids having to use an ON ERROR routine if the directory
  341. 'is empty. Then just kill everything in the ARKVIEW.PATH$
  342. '***********************************************************
  343. CALL OpenOutW (ZArkViewPath$ + "\DANDAN.DAN")
  344.     CLOSE 2
  345.   CALL KillWork (ZArkViewPath$ + "\*.*")
  346. '
  347. '
  348. ' *****  GET USER NAME
  349. ' *****  C - COMMAND FROM NEWUSER REGISTER OPTIONS (CHANGE NAME OR ADDRESS)
  350. '
  351. 400 CALL SkipLine(1)
  352.     ZEscapeInsecure = ZFalse
  353.     ZUpperCase = ZFalse
  354.     ZExpertUser = ZExpertUserDef
  355.     CALL SetExpert
  356.     WasA1$ = "What is your "
  357.     GOSUB 12500
  358.     CALL CommInfo
  359.     IF ZFF THEN _
  360.        ZLogonErrorIndex = 1 : _
  361.        GOTO 10620
  362.     IF ZMinOldCallerBaud > ZBaudTest! THEN _
  363.        CALL QuickTPut (MID$(STR$(ZBaudTest!),2) + " BAUD ACCESS NOT ALLOWED!",2) : _
  364.        ZWasLG$(7) = "OLD CALLER BAUD RESTRICTION" : _
  365.        ZLogonErrorIndex = 7 : _
  366.        GOTO 10620
  367.     TurboLogon = (LEFT$(ZUserIn$(4),1) = "!")
  368.     SkipWelcomeScreen = (LEFT$(ZUserIn$(4),1) = "$")
  369.     ZHomeConf$ = RIGHT$(ZUserIn$(4),LEN(ZUserIn$(4)) _
  370.                      + (TurboLogon OR SkipWelcomeScreen))
  371.     CALL AllCaps(ZHomeConf$)
  372.     NumOfTC = ZLastIndex-3                                        'DGS-TTC
  373. '
  374. ' *****  CHECK IF SAME USER ON ANOTHER NODE   ***
  375. '
  376. 410 IF ZExitToDoors THEN _
  377.        ZCurDate$ = MID$(ZMsgRec$,119,2) + _
  378.                        "-" + _
  379.                        MID$(ZMsgRec$,121,2) + _
  380.                        "-" + _
  381.                        MID$(ZMsgRec$,123,2) : _
  382.        ZTime$ = MID$(ZMsgRec$,125,2) + _
  383.               ":" + _
  384.               RIGHT$(ZMsgRec$,2) : _
  385.        IF LEFT$(ZTime$,2) < "12" THEN _
  386.           ZTime$ = ZTime$ + _
  387.                  " AM" _
  388.        ELSE ZTime$ = ZTime$ + _
  389.                    " PM"
  390.     NodeIndex = 2
  391.     WasXX = NodesInSystem + 1
  392.     WasX$ = LEFT$(ZActiveUserName$+"  ",30)
  393. 412 IF NodeIndex > WasXX THEN _
  394.        GOTO 430
  395.     GET 1,NodeIndex
  396.     IF INSTR(ZMsgRec$,WasX$) THEN _
  397.        GOTO 420
  398.     NodeIndex = NodeIndex + 1
  399.     GOTO 412
  400. 420 IF MID$(ZMsgRec$,57,1) = "A" THEN _
  401.        ZLogonErrorIndex = 6 : _
  402.        ZWasLG$(6) = ZWasLG$(6) + _
  403.                 LEFT$(ZMsgRec$,25) : _
  404.        ZOutTxt$ = "Name <" + ZActiveUserName$ + "> in use on another node" : _
  405.        CALL RingCaller : _
  406.        GOTO 10620
  407.     ZFirstName$ = LEFT$(ZMsgRec$,INSTR(ZMsgRec$, " ") - 1)
  408. '    IF NOT ZPrivateDoor THEN _                             ' Bh 112290
  409. '       CALL SkipLine (1) : _
  410. '       CALL QuickTPut1 (ZFirstName$ + ", welcome back!")
  411.     IF ZExitToDoors THEN _
  412.        GOTO 457
  413. '
  414. ' *****  TEST FOR REMOTE SYSOP LOGGING ON   ***
  415. '
  416. 430 GET 1,ZNodeRecIndex
  417.     SameUser = (ZActiveUserName$ = LEFT$(ZMsgRec$,LEN(ZActiveUserName$)))
  418.     DelSpace = INSTR(MID$(ZMsgRec$,1,31),"  ")
  419.     PrevUserName$ = MID$(ZMsgRec$,1,DelSpace + 1 ) +_
  420.     MID$(ZMsgRec$,93,24)
  421. '
  422. ' *****  TEST FOR SYSOP NAME ATTEMPT  ***
  423. '
  424. 445 IF INSTR(ZActiveUserName$,"SYSOP") OR _
  425.        INSTR(ZActiveUserName$,ZSysopFirstName$ + " " + ZSysopLastName$) THEN _
  426.        ZLogonErrorIndex = 2 : _
  427.        GOTO 10620
  428. '
  429. ' *****  REMOVE INVALID CHARACTERS FROM USER NAME  ***
  430. '
  431. 455 CALL BadChar (ZActiveUserName$)
  432.     IF ZActiveUserName$ = "" THEN _
  433.        GOTO 400
  434. '
  435. ' ****  CHECK FOR ACTIVE USER   ***
  436. '
  437. 457 CALL SkipLine (1)
  438.     GOSUB 12840
  439.     GOSUB 12850
  440.     GOSUB 12598
  441.     GOSUB 11482
  442.     CALL CompDate (TodayRegYY,TodayRegMM,TodayRegDD,TodayComputeDate!)
  443.     IF NOT Found THEN _
  444.        GOTO 700
  445.     GOSUB 12984
  446. '
  447. ' *****  ACTIVE USER FOUND  ****
  448. '
  449. 459 GOSUB 9500
  450.     ZLastDateTimeOnSave$ = ZLastDateTimeOn$
  451.     IF ZExitToDoors THEN _
  452.        TempHoldTime! = VAL(LEFT$(ZTime$,2))*3600! + _      'KK030901
  453.                          VAL(MID$(ZTime$,4,2))*60! : _     'KK030981
  454.        CALL CheckTime(TempHoldTime!, TempTime!, 2) : _
  455.        MinsInDoors = TempTime! / 60 : _
  456.        CALL TimeRemain (MinsRemaining)
  457.     ZUserFileIndex = LOC(5)
  458.     GOSUB 5135
  459. '
  460. ' ***  COMPUTE THE NUMBER OF DAYS REMAINING UNTIL REGISTRATION EXPIRES **
  461. '
  462.     IF ZRestrictByDate AND ZDaysInRegPeriod > 0 THEN _
  463.        CALL CompDate (UserRegYY,UserRegMM,UserRegDD,UserComputeDate!) : _
  464.        ZRegDaysRemaining = UserComputeDate! + _
  465.                             ZDaysInRegPeriod - _
  466.                             TodayComputeDate! : _
  467.        CALL ExpireDate (UserComputeDate!,ZDaysInRegPeriod,ZExpirationDate$) _
  468.     ELSE ZDaysInRegPeriod = 0
  469.     IF NOT ZPrivateDoor THEN _
  470.        IF ZRegDaysRemaining < 0 AND ZDaysInRegPeriod > 0 THEN _
  471.        IF ZUserSecLevel > ZExpiredSec THEN _
  472.           CALL QuickTPut1 (ZWasLG$(9) + _
  473.                       " - security reset to " + _
  474.                       STR$(ZExpiredSec)) : _
  475.           CALL BufFile(ZHelpPath$+"RGXPIRD"+ZHelpExtension$,WasX) : _
  476.           ZLogonErrorIndex = 9 : _
  477.           ZUserSecLevel = ZExpiredSec : _
  478.           LSET ZSecLevel$ = MKI$(ZUserSecLevel) : _
  479.           GOSUB 5135
  480. 460 UserSecLevel$ = STR$(ZUserSecLevel)
  481.     IF ZUserSecLevel > -1 THEN _
  482.        UserSecLevel$ = MID$(UserSecLevel$,2) : _                  'DGS-MSRMod
  483.        DGSAcc$=UserSecLevel$                                      'DGS-MSR
  484.     IF ZUserSecLevel >= ZMinLogonSec THEN _
  485.        GOTO 470
  486.     IF NOT ZPrivateDoor THEN _
  487.        DGSAcc$ = "MSR" : _                                        'DGS-MSR
  488.        GOSUB 465 : _
  489.        CALL DelayTime (8 + ZBPS)
  490.     IF ZLogonErrorIndex < 9 AND _
  491.        ZErrCode = 0 THEN _
  492.        ZLogonErrorIndex = 8
  493.     GOTO 10620
  494. '
  495. ' ***  DISPLAY LOG-ON MESSAGE FOR SPECIFIC SECURITY LEVEL  **
  496. '
  497. 465 TurboLogon = TurboLogon AND (ZExitToDoors OR _
  498.                   (ZUserSecLevel >= ZAllowCallerTurbo))
  499.     IF TurboLogon THEN _
  500.        RETURN
  501.     ZFileName$ = ZWelcomeFileDrvPath$ + _
  502.                  "LG" + _
  503.                   DGSAcc$ + _                                      'DGS-MSRMod
  504.                  ".DEF"
  505.     CALL Graphic (ZUserGraphicDefault$,ZFileName$)
  506. 466 ZStopInterrupts = ZTrue
  507.     ZBypassTimeCheck = ZTrue
  508.     CALL BufFile (ZFileName$,WasX)
  509.     RETURN
  510. 470 GOSUB 12989
  511.     ZWasCI$ = ZCityState$
  512.     CALL Trim (ZWasCI$)
  513.     ZAttemptsAllowed = 4
  514.     ZPswdSave$ = ZPswd$
  515.     TempSysop = (ZUserSecLevel >= ZSysopSecLevel)
  516.     ZMsgPswd = ZFalse
  517.     IF NOT SubBoard THEN _
  518.        ZElapsedTime = CVI(ZElapsedTime$)
  519.     IF (NOT ZExitToDoors) AND _
  520.        (ZCurDate$ <> LEFT$(ZLastDateTimeOn$,8)) AND _
  521.        (ZElapsedTime > 0 OR NOT ZKeepTimeCredits) THEN _
  522.        ZElapsedTime = 0
  523.     IF ZPrivateDoor AND _
  524.        ZTransferFunction = 3 THEN _
  525.        GOSUB 755 : _
  526.        GOTO 800
  527.     IF ZPswdSave$ = SPACE$(LEN(ZPswdSave$)) THEN _
  528.        GOSUB 755 : _
  529.        GOTO 800
  530. 480 GOSUB 5370
  531.    ' IF ZPrivateDoor OR (ZWasA AND ZEscapeInsecure) OR ZDoorSkipsPswd
  532. IF ZPrivateDoor OR (ZWasA AND ZEscapeInsecure) OR ZExitToDoors THEN _ 'Pe 01/03/90
  533.        ZWasZ$ = ZPswdSave$ : _
  534.        ZPswdFailed = 0 : _
  535.        GOTO 644
  536.     ZSubParm = 4
  537.     CALL PassWrd
  538.     ZLastIndex = 0
  539. 630 IF ZPswdFailed THEN _
  540.        GOSUB 825 : _
  541.        ZLogonErrorIndex = 4 : _
  542.        GOTO 10620
  543. 643 GOSUB 41070
  544. 644 ZNewUser = ZFalse
  545.     WasWK$ = RIGHT$(STR$(ASC(MID$(ZListNewDate$,2))),2) + _  ' MM
  546.            "/" + _
  547.            RIGHT$(STR$(ASC(MID$(ZListNewDate$,3))),2) + _    ' DD
  548.            "/" + _
  549.            RIGHT$(STR$(ASC(ZListNewDate$)),2)                ' YY
  550.     ZWasLM$ = RIGHT$(WasWK$,2) + _                           ' YY
  551.           LEFT$(WasWK$,2) + _                                ' MM
  552.           MID$(WasWK$,4,2)                                   ' DD
  553.     IF MID$(ZWasLM$,3,1) = " " THEN _
  554.        MID$(ZWasLM$,3,1) = "0"
  555. 655 IF MID$(ZWasLM$,5,1) = " " THEN _
  556.        MID$(ZWasLM$,5,1) = "0"
  557. 660 'CALL Muzak (1) 'Pe 01/03/90
  558.     GOTO 800
  559. 670 GOSUB 12570
  560.     IF Found THEN _
  561.        GOSUB 12984 : _
  562.        RETURN 12595
  563.     RETURN
  564. '
  565. ' ****  ACTIVE USER NOT FOUND (NEWUSER ROUTINE)  ***
  566. '
  567. 700 ZExpertUser = ZFalse
  568.     CALL SetExpert
  569.     IF ZMinNewCallerBaud > ZBaudTest! THEN _
  570.        CALL QuickTPut ("(" + MID$(STR$(ZBaudTest!),2) + " BAUD ACCESS FOR REGISTERED USERS ONLY)",2) : _
  571.        ZWasLG$(7) = "NEW CALLER BAUD RESTRICTION" : _
  572.        ZLogonErrorIndex = 7 : _
  573.        GOTO 10620
  574.     CALL QuickTPut1 ("User not found")
  575.     ZLastIndex = 0
  576.     GOSUB 12558
  577.     IF ZNo THEN _
  578.        GOSUB 12990 : _
  579.        GOTO 400
  580.     CALL Line25
  581.     ZWasZ$ = ZFirstName$
  582.     GOSUB 670
  583.     ZWasZ$ = ZLastName$
  584.     GOSUB 670
  585.     ZWasZ$ = ZActiveUserName$
  586.     GOSUB 670
  587.     TurboLogon = ZFalse
  588. 710 IF ZUserFileIndex = 0 AND NOT ZSurviveNoUserRoom THEN _
  589.        GOTO 13540
  590. 720 GOSUB 5370
  591.     IF ZWasA THEN _
  592.        ZUserSecLevel = ZSysopSecLevel _
  593.     ELSE ZUserSecLevel = ZDefaultSecLevel
  594. 725 IF ZUserSecLevel < ZMinLogonSec THEN _
  595.        ZLogonErrorIndex = 1 : _
  596.        GOTO 460
  597.     IF ZFirstName$ = ZLastName$ THEN _
  598.        CALL QuickTPut1 (ZFirstNamePrompt$+"/"+ZLastNamePrompt$+" cannot be same") : _
  599.        ZLogonErrorIndex = 3 : _
  600.        GOTO 10620
  601.     IF NOT ZRememberNewUsers THEN _
  602.        GOSUB 13700 : _
  603.        ZUserFileIndex = 0 : _
  604.        GOSUB 12960: _
  605.        PrevLastOn$ = "00-00-00": _
  606.        GOTO 735
  607.     ZNewUser = ZTrue
  608.     ZNewUserDGS = ZTrue                                           'DGS-NEW
  609.     CALL OpenUser (HighestUserRecord)
  610.     GOSUB 9450
  611.     GOSUB 12630
  612.     MID$(ZUserRecord$,ZStartHash,ZLenHash) = LEFT$("NEWUSER",ZLenHash)
  613.     IF ZStartIndiv>0 THEN _
  614.        MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = IndivValue$
  615.     GOSUB 9440
  616. 730 GOSUB 12960
  617. 735 ZBypassTimeCheck = ZTrue
  618.     CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)
  619.     CALL Line25
  620.     ZFileName$ = ZNewUserFile$
  621.     ZStopInterrupts = ZTrue
  622.     GOSUB 1790
  623.     CALL SkipLine(1)
  624. 739 CALL QuickTPut1 (ZActiveUserName$ + " from " + ZWasCI$)
  625. 740 ZOutTxt$ = "C)hange "+ZFirstNamePrompt$+"/"+ZLastNamePrompt$+"/"+ZUserLocation$+", D)isconnect, [R]egister"
  626.     GOSUB 12995
  627.     IF ZWasQ = 0 THEN _
  628.        ZWasZ$ = "R" _
  629.     ELSE CALL AllCaps (ZUserIn$(1)) : _
  630.          ZWasZ$ = ZUserIn$(1)
  631.     ZWasS = INSTR("CDR",ZWasZ$)
  632. 745 IF NOT ZRememberNewUsers THEN _
  633.        ON ZWasS GOTO 748,752,754
  634.     ON ZWasS GOTO 747,750,760
  635.     GOTO 740
  636. 747 CALL UpdtCalr (ZActiveUserName$ + " from " + ZWasCI$ + _
  637.                            " changed Name/Address",2)
  638.     MID$(ZUserRecord$,ZStartHash,ZLenHash) = STRING$(ZLenHash,0)
  639.     GOSUB 9440
  640.     GOSUB 12991
  641. 748 ZFF = ZFalse
  642.     GOTO 400
  643. '
  644. ' ***  D - COMMAND FROM NEWUSER ROUTINE (DISCONNECT - REFUSE TO REGISTER) **
  645. '
  646. 750 CALL UpdtCalr (ZActiveUserName$ + " from " + ZWasCI$ + _
  647.                            " didn't register",2)
  648.     MID$(ZUserRecord$,ZStartHash,ZLenHash) = STRING$(ZLenHash,0)
  649.     GOSUB 9440
  650.     GOSUB 12991
  651. 752 ZFF = ZFalse
  652.     ZUserFileIndex = 0
  653.     GOTO 13540
  654. '
  655. ' *****  GET AND VERIFY PASSWORD   ****
  656. '
  657. 754 CALL QuickTPut1 ("Guest privileges granted.  Re-register on future calls")
  658.     ZUserSecSave = ZUserSecLevel
  659.     GOTO 832
  660. 755 IF ZPrivateDoor THEN _
  661.        ZUserIn$ = ZPswd$ : _
  662.        ZWasZ$ = ZUserIn$ : _
  663.        RETURN
  664.     GOSUB 12800
  665.     ZOutTxt$ = "Re-Enter PASSWORD for Verification"
  666.     GOSUB 45010
  667.     SWAP ZWasZ$,ZUserIn$
  668.     CALL AllCaps (ZWasZ$)
  669.     IF ZUserIn$ <> ZWasZ$ THEN _
  670.        CALL QuickTPut1 ("Passwords Don't Match!") : _
  671.        GOTO 755
  672.     RETURN
  673. '
  674. ' ***  R - COMMAND FROM NEWUSER ROUTINE - REGISTER   **
  675. '
  676. 760 GOSUB 755
  677.     CALL AllCaps (ZWasZ$)
  678.     LSET ZPswd$ = ZWasZ$
  679. '   CALL QuickTPut1 ("Please REMEMBER your password")   'ANSIEd
  680.     ZUserTextColor = 37
  681.     ZTempSecLevel = ZUserSecLevel
  682.     CALL Protocol
  683.     ZUserXferDefault$ = "N"
  684.     ZProtoPrompt$ = "None"
  685.     IF ZNewUserSetsDefaults THEN _
  686.        GOSUB 42950 : _
  687.        ZBypassTimeCheck = ZTrue : _
  688.        GOSUB 43000 : _
  689.        ZBypassTimeCheck = ZFalse : _
  690.        CALL Graphic (ZUserGraphicDefault$,ZFileName$) : _
  691.        GOSUB 42805 : _
  692.        GOSUB 42700 _
  693.     ELSE ZUpperCase = ZFalse : _
  694.          ZHiLiteOff = ZTrue : _
  695.          CALL SetGraphic (0,ZUserGraphicDefault$) : _
  696.          ZNulls = ZFalse
  697.     ZPageLength = ZPageLengthDef
  698.     GOSUB 12900
  699.     GOSUB 5135
  700.     CALL DefaultU
  701. 790 'IF NOT ZNewUser THEN _              'Pe 03/13/90
  702.     '   GOTO 800
  703.     ZFileName$ = ZNewUserQuestionnaire$
  704. '    GOSUB 11520                 ' Bh BETTER FIX THIS
  705.     LSET ZSecLevel$ = MKI$(ZUserSecLevel)
  706.     UserSecLevel$ = STR$(ZUserSecLevel)
  707.     CALL Remove (UserSecLevel$," ")
  708. '
  709. ' ****  LOGIN ALL USERS  ***
  710. '
  711. 800 CALL DoorReturn
  712.     IF ZAdjustedSecurity THEN _
  713.        GOSUB 5135
  714.     IF ZOrigCnfg$ = ZCurDef$ THEN _
  715.        ZMainUserFileIndex = ZUserFileIndex : _
  716.        ZOrigSec = ZUserSecLevel : _
  717.        ZUserSecSave = ZUserSecLevel : _
  718.        OrigFirstName$ = ZFirstName$ : _                           'DGS-ALS
  719.        ZOrigUserNameDGS$ = ZActiveUserName$ : _                   'DGS-ALS
  720.        ZOrigUserName$ = ZActiveUserName$
  721.     ZTimesLoggedOn = CVI(MID$(ZUserOption$,1,2)) - _
  722.        ((ZOrigCnfg$ <> ZCurDef$ OR NOT SubBoard) AND _
  723.         (NOT ZPrivateDoor) AND (NOT ZExitToDoors))
  724.     GOSUB 9500
  725.     IF (NOT ZExitToDoors) AND (NOT SubBoard) THEN _
  726.        CALL UpdtCalr (ZActiveUserName$ + " from " + ZWasCI$ + _
  727.                  " Lvl" + STR$(ZUserSecLevel) + " " + TIME$,2)
  728.     PrevLastOn$ = ZLastDateTimeOn$
  729.     IF ZLocalUser THEN _
  730.        ZTalkToModemAt$ = "9600" : _
  731.        ZBaudParity$ = "9600 BAUD,N,8,1" : _
  732.        ZModemInitBaud$ = "9600" : _
  733.        ZSnoop = ZTrue : _
  734.        ZLineFeeds = ZTrue
  735.     CALL SetCrLf
  736.     CALL SetPrompt
  737.     CALL XferType (2,ZTrue)
  738.     IF NOT SubBoard THEN _
  739.        BoardCheckDate$ = PrevLastOn$
  740.     IF ZPrivateDoor OR SubBoard THEN _
  741.        GOTO 815
  742.     GOSUB 465
  743. '    IF (ZEightBit AND _
  744. '      ZAutoDownDesired) OR _
  745. '     ZAskID THEN _
  746. '    CALL TestUser
  747.     CALL QuickTPut1 (ZFG1$+"Logging " + ZActiveUserName$)
  748. '    CALL Talk (1,ZOutTxt$)
  749.     CALL QuickTPut1 (ZFG2$ + "RBBS-PC " + ZVersionID$ + ZCrLf$ + _
  750.                      ZFG3$ + "Node " + ZNodeID$ + ZCrLf$ +_
  751.                      ZFG4$ + "Operating at " + ZBaudParity$ + ZEmphasizeOff$)
  752. ' ***** PARITY MOD ***** 'Pe 01/03/90
  753. IF RIGHT$(ZBaudParity$,5) <> "N,8,1" THEN _
  754. CALL QuickTPut(CHR$(12),3) : _
  755. ZOutTxt$ = CHR$(7) +" The BBS does NOT support E,7,1 Parameters " + ZCrLf$ + _
  756. "  Please Change your Parameters to 8,N,1 and Call Back" : _
  757. CALL QuickTPut (ZOutTxt$,1) :_
  758. CALL DelayTime (3) : _
  759. GOTO 13540
  760. '***** END OF PARITY MOD *******
  761. '
  762.     CALL DelayTime (2)  'Pe 01/03/90
  763. '    ** LOGIN NEW USER FOR THE CB SIMULATOR **                       'CHT021301
  764. '    IF NodesInSystem > 1 THEN                                        'CHT021301
  765. '       CALL LogNewForChat (NodesInSystem)                            'CHT021301
  766. '    END IF                                                           'CHT021301
  767.     Attempts = 0
  768. '
  769. ' *****  NOTIFY CALLER IF ABLE TO "AUTODOWN"  ****
  770. '
  771. '    IF ZEightBit AND ZAutoDownYes THEN _
  772. '       ZOutTxt$ = CHR$(9) + _
  773. '            ZReturnLineFeed$ + _
  774. '            "You may use AUTODOWNLOADing!" : _
  775. '       CALL RingCaller : _
  776. '       CALL DelayTime(4)
  777. 815 ZDnlds = CVI(ZUserDnlds$)
  778.     ZUplds = CVI(ZUserUplds$)
  779.     ZDLToday! = CVS(ZTodayDl$)                  'Pe 01/03/90
  780.     ZBytesToday! = CVS(ZTodayBytes$)        'Pe 01/03/90
  781.     ZDLBytes! = CVS(ZDLBytes$)             'Pe 01/03/90
  782.     ZULBytes! = CVS(ZULBytes$)            'Pe 01/03/90
  783.     ZBankTime = ASC(ZBankTime$)           'Pe 03/22/90      
  784.     IF ZCurDate$ <> LEFT$(ZLastDateTimeOnSave$,8) THEN  _
  785.        ZDLToday! = 0 : _
  786.        ZBytesToday! = 0
  787.     IF NOT GlobalsSet THEN _
  788.        GlobalsSet = ZTrue : _
  789.        ZGlobalDnlds = ZDnlds : _
  790.        ZGlobalUplds = ZUplds : _
  791.        ZGlobalDLToday! = ZDLToday! : _
  792.        ZGlobalBytesToday! = ZBytesToday! : _
  793.        ZGlobalDLBytes! = ZDLBytes! : _
  794.        ZGlobalULBytes! = ZULBytes! : _
  795.        ZGlobalBankTime = ZBankTime           'Pe Bank Mod
  796.     GOSUB 827
  797.     LSET ZUserOption$ = MKI$(ZTimesLoggedOn) + _
  798.                          MID$(ZUserOption$,3)
  799.     LSET ZLastDateTimeOn$ = ZCurDate$ + _
  800.                               " " + _
  801.                               ZTimeLoggedOn$
  802.     MID$(ZUserRecord$,ZStartHash,ZLenHash) = HashValue$
  803.     IF ZStartIndiv > 0 THEN _
  804.        MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = IndivValue$
  805.     LSET ZUserName$ = ZOrigUserName$
  806.     IF (NOT ZExitToDoors) AND NOT (ZOrigMsgFile$ = ZActiveMessageFile$ AND SubBoard) THEN _
  807.        CALL AutoPage
  808.     IF NOT SubBoard THEN _
  809.        ZOrigUserFileIndex = ZUserFileIndex
  810.     GOSUB 9440
  811.     GOSUB 12991
  812.     CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)
  813.     IF TurboLogon THEN _
  814.        GOTO 819
  815.     IF SkipWelcomeScreen AND _
  816.        (ZUserSecLevel >= ZAllowCallerTurbo) THEN _
  817.        GOTO 816
  818.     IF NOT SameUser THEN _
  819.        ZStopInterrupts = NOT ZWelcomeInterruptable : _
  820.        ZBypassTimeCheck = ZTrue : _
  821.        ZFileName$ = ZWelcomeFile$ : _
  822.        ZDisplayAsUnit = ZTrue : _
  823.        GOSUB 1790 : _
  824.        ZDisplayAsUnit = ZFalse
  825.     ZBypassTimeCheck = ZFalse
  826.     ZStopInterrupts = ZTrue
  827. 816 IF NOT ZNewUser THEN _
  828.      CALL QuickTPut1 (ZFG1$ +"Times on   :" + STR$(ZTimesLoggedOn) + ZCrLf$ +_
  829.                       + ZFG2$ +"Last on was: " + PrevLastOn$ + ZEmphasizeOff$)
  830. 817 IF NOT ZRemindFileXfers OR ZNewUser THEN _
  831.        GOTO 818
  832.     CALL CheckRatio (ZFalse)            'Pe 01/03/90
  833. 818  IF INSTR(PrevUserName$,"SYSOP") THEN _
  834.        GOTO 819
  835. IF ZActiveUserFile$ = ZOrigUserFile$ THEN _     'Pe 02/11/89
  836.     CALL QuickTPut ("Previous caller was: " + PrevUserName$ ,1)
  837. 819 CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)
  838.     IF ZRemindProfile THEN _
  839.        GOSUB 5400 : _
  840.        CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)
  841.     CALL Trim (ZWasCI$)
  842.     GOSUB 5370
  843.     IF ZWasA THEN _
  844.        ZActiveUserName$ = "SYSOP"
  845.     IF (ZNodeRecIndex < 2) THEN _
  846.        GOTO 821
  847.     GOSUB 4910
  848.     GOSUB 24000
  849.     GET 1,ZNodeRecIndex
  850.     MID$(ZMsgRec$,1,31) = ZActiveUserName$ + _
  851.                                  SPACE$(31 - LEN(ZActiveUserName$))
  852.     MID$(ZMsgRec$,40,2) = " 0"
  853.     MID$(ZMsgRec$,44,2) = STR$(ZBPS)
  854.     MID$(ZMsgRec$,55,2) = " 0"
  855.     MID$(ZMsgRec$,57,1) = "A"
  856.     MID$(ZMsgRec$,60,5) = ZTalkToModemAt$ + _
  857.                                  SPACE$(5 - LEN(ZTalkToModemAt$))
  858.     MID$(ZMsgRec$,72,2) = " 0"
  859.     MID$(ZMsgRec$,93,24) = ZWasCI$ + _
  860.                                   SPACE$(24)
  861.     PUT 1,ZNodeRecIndex
  862.     GOSUB 12985
  863. 821 IF ZExitToDoors THEN _
  864.        IF ZTransferFunction = 3 THEN _
  865.           ZNewUser = ZTrue : _
  866.           TurboLogon = ZFalse : _
  867.           SameUser = ZFalse : _
  868.           ZTransferFunction = 0 : _
  869.           GOTO 832 _
  870.        ELSE GOTO 832
  871.     GOSUB 1241
  872.     IF (SubBoard AND (ZOrigMsgFile$ = ZActiveMessageFile$)) _
  873.        OR ((ZUserSecLevel > ZMaxRegSec) AND (NOT ZNewUser)) THEN _
  874.        GOTO 832
  875.     ZWasZ$ = ZRegProgram$
  876.     ZTransferFunction = 3
  877.     CALL DoorExit
  878.     ZTransferFunction = 0
  879.     GOTO 832
  880. '
  881. ' ****  ESC PRESSED ON LOCAL CONSOLE ENTERS HERE   ***
  882. '
  883. 822 LOCATE 24,1
  884.     CALL TakeOffHook
  885.     ZLocalUser = ZTrue
  886.     ZSnoop = ZTrue
  887.     ZSysop = ZTrue
  888.     ZWaitBeforeDisconnect = 32400
  889.     ZBPS = -6
  890.     CALL CommInfo
  891. '    CALL Muzak (2)
  892.     IF NOT ZEscapeInsecure THEN _
  893.        GOTO 345
  894.     ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$
  895.     ZFirstName$ = ZSysopPswd1$
  896.     ZLastName$ = ZSysopPswd2$
  897.     ZUserLogonTime! = TIMER
  898.     ZTimeLoggedOn$ = TIME$
  899.     ZLinesPrinted = 0
  900.     GOTO 457
  901. 825 WasX = (ZMaxPerDay - ZMinsPerSession)
  902.     WasX = -WasX * (WasX > 0)    ' extra from daily max
  903.     ZWasQ! = WasX + ZMinsPerSession + (ZMaxPerDay > 0) * ZElapsedTime
  904.     IF ZWasQ! > ZMinsPerSession THEN _
  905.        ZWasQ! = ZMinsPerSession
  906.     ZSecsPerSession! = ZWasQ! * 60 + ZTimeCredits!
  907.     RETURN
  908. 827 IF ZLastMsgRead > HighMsgNumber THEN _
  909.        ZLastMsgRead = 0 : _
  910.        MID$(ZUserOption$,3,2) = MKI$(0)
  911.     RETURN
  912. 832 IF ZRestrictByDate AND ZDaysInRegPeriod > 0 THEN _
  913.        IF ZRegDaysRemaining <= ZDaysToWarn AND _
  914.           ZRegDaysRemaining > 0 THEN _
  915.           CALL QuickTPut1 ("Registration EXPIRES in" + _
  916.                        STR$(ZRegDaysRemaining) + " days!") : _
  917.           CALL BufFile(ZHelpPath$+"RGXPIRE"+ZHelpExtension$,WasX) : _
  918.           IF NOT ZOK THEN CALL DelayTime (5)
  919.     IF (NOT ZReqQuesAnswered) AND _
  920.        ZReqQues$ <> "" THEN _
  921.          ZFileName$ = ZReqQues$ : _
  922. '         GOSUB 11520 : _         ' Bh BETTER FIX THIS
  923.          IF ZOK THEN _
  924.             ZReqQuesAnswered = ZTrue
  925. 837 ZWasZ$ = ZActiveUserName$ + _
  926.             " on at " + _
  927.             ZCurDate$ + _
  928.             ", " + _
  929.             ZTime$ + _
  930.             " from " + _
  931.             ZWasCI$ + _
  932.             ", " + _
  933.             ZBaudParity$
  934.      ZWasNG$ = ZWasZ$ + SPACE$(128 - LEN(ZWasZ$))
  935.      MsgUserName$ = LEFT$(ZActiveUserName$+"  ",22)
  936. '
  937. ' *  ALWAYS RECORD THE HASH/INDIVIDUATING FIELD TO EACH RECORD LOGGED OUT
  938. '
  939.      WasX$ = "{" + _
  940.           HashValue$ + _
  941.           "/" + _
  942.           IndivValue$ + _
  943.           "}"
  944.      IF LEN(ZWasZ$) < 65 THEN _
  945.         WasX = 65 _
  946.      ELSE WasX = LEN(ZWasZ$) + 2
  947.      MID$(ZWasNG$,WasX) = WasX$
  948.      CALL Printit ("  " + ZWasZ$)
  949.      IF ZNewUser THEN _
  950.         CALL UpdtCalr ("NEWUSER",1)  'Pe 02/04/90
  951. '        CALL Muzak (2)
  952. 842 GOSUB 825
  953.     ZSysop = (ZUserSecLevel >= ZSysopSecLevel)
  954.     GOSUB 12987
  955.     IF SubBoard THEN _
  956.        GOTO 850
  957.     GOSUB 12986
  958.     GOSUB 23000
  959.     CallsToDate! = CallsToDate! + 1 + (ZSysop OR ZHasDoored)
  960.     GOSUB 24000
  961.     GOSUB 12985
  962. 850 ZSubParm = 2
  963.     CALL Line25
  964.     CALL SkipLine (1)
  965.     IF TurboLogon THEN _
  966.        ZBulletinSave$ = ZBulletinMenu$ : _
  967.        GOSUB 9750 : _
  968.        GOTO 900
  969.     CALL CountNewFiles (BoardCheckDate$,ZMsgPtr(),LastNew,ZOutTxt$)
  970.    IF ZNewUser OR LastNew < 1 OR NOT ZNewFilesCheck THEN _       'Pe 01/02/90
  971.        GOTO 852                           'Pe 01/02/90
  972.     IF ZFMSDirectory$ <> "" THEN _
  973.        CALL QuickTPut1 (ZOutTxt$ + STR$(LastNew) + " NEW file(s) added to our " + ZConfName$ + " area") _   ' Bh
  974.     ELSE GOTO 852
  975.      WasL = LEN(ZDnldDrives$)
  976.     SecNum = 19
  977.     IF (NOT ZSkipFilesLogon) AND _
  978.        ZUserSecLevel >= ZOptSec(SecNum) THEN _
  979.           ZOutTxt$ = "Review new files to download ([Y],N)" : _
  980.           GOSUB 12999 : _
  981.           IF NOT ZNo THEN _
  982.              ZLastIndex = 3 : _
  983.              ZAnsIndex = 1 : _
  984.              ZWasQ = 3 : _
  985.              ZUserIn$(2) = MID$(BoardCheckDate$,1,2) + _
  986.                      MID$(BoardCheckDate$,4,2) + _
  987.                      MID$(BoardCheckDate$,7,2) : _
  988.              ZWasY$ = ZUserIn$(3) : _
  989.              CALL BreakFileName (ZFMSDirectory$,DR$,ZWasY$,WasX$,ZFalse) : _
  990.              ZUserIn$(3) = ZWasY$ : _
  991.              TimeLockExempt = ZTrue : _
  992.              GOSUB 20185 : _
  993.              ZLastIndex = 0 : _
  994.              TimeLockExempt = ZFalse
  995. 852 ZStopInterrupts = ZFalse
  996.     ZSysop = (ZUserSecLevel >= ZSysopSecLevel)
  997.     IF ZUserSecLevel < ZOptSec (2) OR _
  998.        ZActiveBulletins < 1 OR _
  999.        ZSysop OR _
  1000.        SameUser THEN _
  1001.           GOTO 900
  1002.     IF ZBulletinMenu$ = ZBulletinSave$ THEN _
  1003.         GOTO 900
  1004.     ZBulletinSave$ = ZBulletinMenu$
  1005. 855 CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)
  1006.     IF ZBulletinsOptional AND NOT ZNewUser THEN _
  1007.        GOTO 856
  1008.     ZStopInterrupts = ZTrue
  1009.     ZNewUser = ZFalse
  1010.     GOSUB 9700
  1011.     IF ZNewUserDGS OR LEFT$(PrevLastOn$,8) <> ZCurDate$ THEN _    'DGS-003
  1012.        ZUserLogonTime! = TIMER : _                                'DGS-003
  1013.        LSET ZLastDateTimeOn$ = ZCurDate$ +" "+ ZTimeLoggedOn$ : _ 'DGS-003
  1014.        ZSecsPerSession! = (ZMinsPerSession + ZElapsedTime) * 60 : _ 'DGS-003
  1015.        MinsRemaining = ZSecsPerSession! / 60                      'DGS-003
  1016.     ZStopInterrupts = ZFalse
  1017.     GOTO 900
  1018. 856 IF NOT ZCheckBulletLogon THEN _
  1019.        ZAnsIndex = 0 : _
  1020.        GOSUB 9760 : _
  1021.        GOTO 900
  1022.     CALL SkipLine (1)
  1023.     ZOutTxt$ = "Skip the NEWS ROOM Menu (Y,[N])"                       'DGS-TXT   ' Bh 091190
  1024. '         STR$(ZActiveBulletins) + _                              'DGS-TXTMOD
  1025. '         " bulletins (Y,[N])"                                    'DGS-TXTMOD
  1026.     GOSUB 12999
  1027.     IF ZYes THEN _
  1028.        GOTO 900
  1029. 860 ZNewUser = ZFalse
  1030.     GOSUB 9700
  1031.     IF ZNewUserDGS OR LEFT$(PrevLastOn$,8) <> ZCurDate$ THEN _    'DGS-003
  1032.        ZUserLogonTime! = TIMER : _                                'DGS-003
  1033.        LSET ZLastDateTimeOn$ = ZCurDate$ +" "+ ZTimeLoggedOn$ : _ 'DGS-003
  1034.        ZSecsPerSession! = (ZMinsPerSession + ZElapsedTime) * 60 : _ 'DGS-003
  1035.        MinsRemaining = ZSecsPerSession! / 60                      'DGS-003
  1036. 900 ZNewUser = ZFalse
  1037.     ActionFlag = (ZLogonMailLevel$ = "S")
  1038.     LogonMailNew = (ZLogonMailLevel$ = "N")
  1039.     GOSUB 1895
  1040.     IF ZActiveUserName$ = "SYSOP" AND NOT ZSysop THEN _
  1041.        ZActiveUserName$ = ZOrigUserName$
  1042.     LogonMailNew = ZFalse
  1043.     ZSubParm = 2
  1044.     CALL Line25
  1045.     ZSection$ = "    "
  1046.     ZOutTxt$ = ""
  1047.     IF (NOT ZConfMode) AND (NOT SubBoard) AND NOT TurboLogon THEN _
  1048.        MailCheckConfirm = ZTrue : _
  1049.        ZNonStop = ZTrue : _
  1050.        GOSUB 5800
  1051.     MailCheckConfirm = ZFalse
  1052.     ZWasQ! = MinsInDoors * 60
  1053.     ZExitToDoors = ZFalse
  1054.     GOSUB 2350
  1055.     IF NOT ZPrivateDoor THEN _
  1056.        GOTO 955
  1057.     GOSUB 20165
  1058.     CALL SetSection
  1059.     ZPrivateDoor = ZFalse
  1060.     GOTO 1205
  1061. 955 IF NOT TurboLogon THEN _
  1062.        GOSUB 4850 : _            'pe 02/03/90
  1063.  IF STR$(ZLastMsgRead) < STR$(HighMsgNumber) AND ZUserSecLevel => MsgSec THEN _    'Pe 01/29/89
  1064.      GOSUB 4275                                 'PEASKMAIL
  1065.     TurboLogon = ZFalse
  1066. '
  1067. ' *                           COMMAND PROCESSING
  1068. '
  1069. 1200 CLOSE 1
  1070.      GOSUB 1280
  1071. 1205 IF ZSubParm < 0 THEN _
  1072.         GOTO 202
  1073.      ZSubParm = 1
  1074.      ZStopInterrupts = ZFalse
  1075.      ZNonStop = (ZPageLength < 1)
  1076.      ZWasQ = 0
  1077.      IF ZHomeConf$ <> "" AND ZHomeConf$ <> "MAIN" THEN            'DGS-TTMMOD
  1078.         TurboLogon = (NOT ConfMailJoin)                           'DGS-TTMMOD
  1079.         ConfMailJoin = ZFalse                                     'DGS-TTMMOD
  1080.         IF LEFT$(ZHomeConf$,1) = "*" THEN                         'DGS-TTM
  1081.            ZHomeConf$ = MID$(ZHomeConf$,2)                        'DGS-TTM
  1082.            ZUserIn$(4) = ZHomeConf$                               'DGS-TTC
  1083.            TempCommStack$ = ZCommPortStack$                       'DGS-TTC
  1084.            FOR Count = 1 TO NumOfTC                               'DGS-TTC
  1085.               CALL CheckMacro (ZUserIn$(Count+3),Found)           'DGS-TTC
  1086.               TempCommStack$ = (TempCommStack$ + _                'DGS-TTC
  1087.                       ZUserIn$(Count+3) + ZCarriageReturn$)       'DGS-TTC
  1088.               IF Found THEN                                       'DGS-TTC
  1089.                  TempCommStack$ = (TempCommStack$ + ZWasY$)       'DGS-TTC
  1090.               END IF                                              'DGS-TTC
  1091.            NEXT Count                                             'DGS-TTC
  1092.            ZCommPortStack$ = TempCommStack$                       'DGS-TTC
  1093.            ZUserIn$(ZAnsIndex) = ""                               'DGS-TTC
  1094.            ZHomeConf$ = ""                                        'DGS-TTM
  1095.            GOTO 1235                                              'DGS-TTM
  1096.         ELSE                                                      'DGS-TTD
  1097.            IF LEFT$(ZHomeConf$,1) = "#" THEN                      'DGS-TTD
  1098.               ZFF = 4                                             'DGS-TTD
  1099.               ZUserIn$(2) = MID$(ZHomeConf$,2)                    'DGS-TTD'4
  1100.               ZHomeConf$ = ""                                     'DGS-TTD
  1101.               ZWasQ = 1                                           'DGS-TTD
  1102.               ZAnsIndex = 1                                       'dgs-ttdnew
  1103.               ZLastIndex = 2                                      'dgs-ttdnew
  1104.               GOTO 1240                                           'DGS-TTD
  1105.            ELSE ZFF = 8                                           'DGS-TTDMOD
  1106.               ZUserIn$(2) = ZHomeConf$                            'DGS-TTDMOD
  1107.               ZHomeConf$ = ""                                     'DGS-TTDMOD
  1108.               ZWasQ = 1                                           'DGS-TTDMOD'2
  1109.               ZAnsIndex = 1                                       'DGS-TTDMOD
  1110.               ZLastIndex = 2                                      'DGS-TTDMOD
  1111.               ZStoreParseAt = 1                                   'DGS-TTDMOD
  1112.               ZLastCommand$ = "MJ"                                'DGS-TTDMod
  1113.               GOTO 1240                                           'DGS-TTDMOD
  1114.            END IF                                                 'DGS-TTC
  1115.         END IF                                                    'DGS-TTC
  1116.      END IF                                                       'DGS-TTC
  1117.      CALL SkipLine (1)
  1118. 1210 GOSUB 41000
  1119.      IF ZAnsIndex < ZLastIndex THEN _
  1120.         GOTO 1232
  1121. '     CALL Talk (10,ZOutTxt$)               'Pe 02/03/90
  1122.      IF ZExpertUser THEN _
  1123.         GOTO 1230
  1124. 1212 ZLinesPrinted = -ZMenusCanPause * ZLinesPrinted
  1125.      IF ZCustomPUI THEN _
  1126.         GOTO 1230
  1127.      IF ZSubSection < ZBegFile THEN _
  1128.         IF ZUserSecLevel >= ZSysopMenuSecLevel THEN _
  1129.            ZFileName$ = ZMenu$(1) : _
  1130.            GOSUB 43025
  1131.      ZFileName$ = ZMenu$(ZMenuIndex)
  1132.      ZDeleteInvalid = ZTrue
  1133.      GOSUB 43025
  1134.      ZDeleteInvalid = ZFalse
  1135. 1230 CALL Line25
  1136.      CALL SkipLine (1)
  1137.      IF ZConfMode THEN _
  1138.         ZOutTxt$ = "The " + ZConfName$ : _              ' Bh 083190
  1139.         GOSUB 12979
  1140. '        CALL Talk (65,ZConfName$)  'Pe 02/03/90
  1141.      IF ZMenuIndex = 6 THEN _
  1142.         ZSubParm = 1 : _
  1143. '        CALL Library
  1144. '      ** CHECK TO SEE IF THIS USER HAS BEEN PAGED **                'CHT021301
  1145. '     CALL CBCheck                                                    'CHT021301
  1146. '     CALL Talk (ZMenuIndex, ZOutTxt$)           'Pe 02/03/90
  1147. 1232 IF ZCustomPUI THEN _
  1148.         CALL UserFace (ZUserGraphicDefault$) : _
  1149.         GOSUB 12997 : _
  1150.         GOTO 1235
  1151.      ZPossibleMacro = ZTrue
  1152.      MID$(ZLastCommand$,2,1) = " "
  1153.      CALL DispTimeRemain (MinsRemaining)     'Pe 02/03/90
  1154.      ZOutTxt$ = ZCmdPrompt$
  1155.      GOSUB 12930
  1156.      IF ZWasQ = 0 THEN _
  1157.         GOTO 1230
  1158. 1235 ZWasZ$ = ZUserIn$(ZAnsIndex)
  1159.      IF ZWasZ$ = SPACE$(LEN(ZWasZ$)) THEN _
  1160.         GOTO 1230
  1161.    CALL SearchCmd (ZSubSection,ZFF)
  1162.      IF ZFF < 1 THEN _
  1163.         CALL QuickTPut1 ("Unknown command <"+ZWasZ$+">") : _
  1164.         CALL FlushKeys : _
  1165.         GOTO 1230
  1166.  '    CALL Talk (65,"OPTION "+ZWasZ$+" SELECTED")     'Pe 02/03/90
  1167. 1240 IF ZUserSecLevel < ZOptSec(ZFF) THEN _
  1168.        ZViolation$ = ZSection$ + _
  1169.                      " " + _
  1170.                      ZWasZ$ : _
  1171.         GOSUB 1380 : _
  1172.         GOTO 1205
  1173.      IF ZFF > 39 THEN _
  1174.         ZDirExtension$ = ZLibDirExtension$ _
  1175.      ELSE ZDirExtension$ = ZMainDirExtension$
  1176.      CALL QuickTput (CHR$(12),1)              'Pe 02/01/90
  1177.         ON ZFF GOSUB _
  1178.                  1400, _      ' 1  A)nswer questionnaire 1
  1179.                  9700, _      ' 2  B)ulletins
  1180.                  1800, _      ' 3  C)omment to Sysop use 9801 for CH@ command        'Pe 02/28/90
  1181.                  10970, _     ' 4  D)oor (exit to)
  1182.                  2000, _      ' 5  E)nter a message
  1183.                  1275, _      ' 6  F)ile system (exit to)
  1184.                  1525, _      ' 7  I)nitial welcome redisplayed 'Pe 02/03/90
  1185.                  5300, _      ' 8  J)oin a conference
  1186.                  3900, _      ' 9  K)ill a message
  1187.                  4700, _      '10  O)perator page
  1188.                  1892, _      '11  P)ersonal mail (look for) 'Pe 02/03/90
  1189.                  4330, _      '12  R)ead messages
  1190.                  4340, _      '13  S)can message headers
  1191.                  4320, _      '14  T)ype ASCII FILE 'Pe 02/03/90
  1192.                  1285, _      '15  U)tilities (exit to)
  1193.                  5800, _      '16  V)iew a conference
  1194.                  9800, _      '17  W)ho's on other nodes displayed
  1195.                  1283, _      '18  @)Library (exit to) 18
  1196.                 20160, _      '19  D)ownload
  1197.                 10570, _      '20  G)oodbye
  1198.                 20155, _      '21  L)ist
  1199.                 20185, _      '22  N)ew
  1200.                 20180, _      '23  P)ersonal files
  1201.                 20175, _      '24  S)can
  1202.                 20170, _      '25  U)pload
  1203.                 20140, _      '26  V)iew ARC Contents
  1204.                  5500, _      '27  B)aud rate change 300==>450 1 'Pe 02/03/90
  1205.                  9099, _      '28  C)lock (time & time on) 'Pe 02/03/90 Change to BANKTIME
  1206.                  42850, _     '29  E)cho selection
  1207.                  42800, _     '30  F)ile transfer protocol
  1208.                  43000, _     '31  G)raphics
  1209.                  5200, _      '32  L)ines per page
  1210.                  10925, _     '33  M)essage margin
  1211.                  5110, _      '34  P)assword change
  1212.                  5450, _      '35  R)eview preferences   'Pe 02/03/90
  1213.                  4850, _      '36  S)tatistics displayed 'Pe 02/03/90
  1214.                  1500, _      '37  T)oggle
  1215.                  10090, _     '38  U)serlog displayed 12
  1216.                  30000, _     '39  A)rchive a Library disk 1
  1217.                  30100, _     '40  C)hange a Library disk
  1218.                  30200, _     '41  D)ownload Library files
  1219.                  10570, _     '42  G)oodbye
  1220.                  20155, _     '43  L)ist a Library directory
  1221.                  20175, _     '44  S)can a Library disk directory
  1222.                  20140, _     '45  V)iew arc contents 7
  1223.                  1325, _      '45  H)elp 1
  1224.                  1330, _      '46  ?)help
  1225.                  1250, _      '49  Q)uit
  1226.                  4240, _      '50  X)expert toggle on/off 4
  1227.                  10070, _     '51  1) List comments file 1
  1228.                  10090, _     '52  2) List callers file
  1229.                  10390, _     '53  3) Recover a message
  1230.                  10530, _     '54  4) Erase comments
  1231.                  11000, _     '55  5) User file maintenance
  1232.                   4130, _     '56  6) Toggle page bell on/off
  1233.                  10930        '57  7) Exit to DOS 2.x or above 7
  1234.      GOTO 1205
  1235. '
  1236. ' ***       NEWS file scan        ***
  1237. '
  1238. 1241 NewsDate# = VAL(MID$(BoardCheckDate$,4,2)) + _
  1239.         (100 * VAL(MID$(BoardCheckDate$,1,2))) + _
  1240.         (10000# * (1900 + VAL(MID$(BoardCheckDate$,7,2))))
  1241.      GOTO 1243
  1242. 1242 NewsDate# = 0
  1243. 1243 ZFileName$ = ZNewsFileName$
  1244.      CALL RBBSFind (ZFileName$,WasZ,WasY,ZMsgPtr,WasD)
  1245.      IF WasZ <> 0 THEN _
  1246.         RETURN
  1247.      FDate# = WasD + (100 * ZMsgPtr) + (10000# * (WasY + 1980))
  1248.      IF NewsDate# > FDate# THEN _
  1249.         RETURN
  1250.      IF TurboLogon THEN _
  1251.         CALL QuickTPut1("As it is written, There is none righteous, no, not one") : _
  1252.         RETURN
  1253.      ZStopInterrupts = ZFalse
  1254.      ZNonStop = (ZPageLength < 1)
  1255.      GOSUB 1790
  1256.      WasZ = 0
  1257.      RETURN
  1258. '
  1259. ' ****           QUIT COMMAND (GLOBAL)              ***
  1260. '
  1261. 1250 IF ZExpertUser THEN _
  1262.         ZOutTxt$ = ZQuitPromptExpert$ _
  1263.      ELSE ZOutTxt$ = ZQuitPromptNovice$
  1264.      ZStackC = ZTrue
  1265.      GOSUB 12930
  1266.      IF ZWasQ = 0 THEN _
  1267.         ZUserIn$(ZAnsIndex) = "M"
  1268.      ZWasZ$ = ZUserIn$(ZAnsIndex)
  1269.      CALL AllCaps (ZWasZ$)
  1270.      IF ZWasZ$ = "C" THEN _
  1271.         ZWasZ$ = "M" : _
  1272.         GOTO 5323
  1273.      IF ZWasZ$ <> SPACE$(LEN(ZWasZ$)) THEN _
  1274.         ON INSTR(ZQuitList$,ZWasZ$) GOTO 1275,1280,1285,10570,1283
  1275.      GOTO 1250
  1276. 1275 ZMenuIndex = 3
  1277.      GOTO 1295
  1278. 1280 ZMenuIndex = 2
  1279.      GOTO 1295
  1280. 1283 ZMenuIndex = 6
  1281.      ZActiveFMSDir$ = ""
  1282.      GOTO 1295
  1283. 1285 ZMenuIndex = 4
  1284. 1295 CALL SetSection
  1285.      RETURN
  1286. 1300 CALL QuickTPut1 (ZConfName$ + " Messages")        ' Bh 091090
  1287.      RETURN
  1288. '
  1289. ' **** COMMON LOCAL DISPLAY PRINT  ***
  1290. '
  1291. 1315 NumReturns = 1
  1292. 1320 CALL LPrnt(WasD$,NumReturns)
  1293.      RETURN
  1294. '
  1295. ' ******            HELP (GLOBAL)           ****
  1296. '
  1297. 1325 CALL ViewHelp (ZSubSection,ZUserGraphicDefault$, _
  1298.                 MID$("MAINFILEUTILMAINLIBR",4 * ZMenuIndex - 7,4))
  1299.      IF ZSubParm = -1 THEN _
  1300.         RETURN 10595
  1301.      RETURN
  1302. 1330 IF ZExpertUser THEN _
  1303.         RETURN 1212
  1304.      GOTO 1325
  1305. '
  1306. ' *****  RECORD SECURITY VIOLATIONS   ****
  1307. '
  1308. 1380 CALL SecViolation
  1309.      IF NOT ZDenyAccess THEN _
  1310.         RETURN
  1311. 1386 CALL DenyAccess
  1312.      GOTO 10620
  1313. 1397 ZOutTxt$ = "Sorry, " + _
  1314.           ZFirstName$ + _
  1315.           ", " + _
  1316.           ZOutTxt$
  1317.      GOTO 12975
  1318. '
  1319. ' ***  A - answer questionnaire
  1320. '
  1321. 1400 WasA1$ = ZAnsMenu$
  1322. '     CALL Talk (13,ZOutTxt$)    'Pe 02/03/90
  1323.      ReturnToPrompt = (ZWasQ > 1)
  1324. 1401 ZStackC = ZTrue
  1325.      CALL SubMenu ("Choose one, or L to display this menu again" + ZPressEnterExpert$, _
  1326.         WasA1$,ZQuesPath$,".DEF","",ZUserGraphicDefault$,ZTrue,ZFalse,ZTrue,"")
  1327.      IF ZWasQ = 0 THEN _
  1328.         RETURN
  1329.      IF ZSubParm = -1 THEN _
  1330.         RETURN 10595
  1331.      QuestHold$ = ZWasZ$
  1332.      GOSUB 11520          ' Bh BETTER FIX THIS
  1333.      CLOSE 2
  1334.      CALL UpdtCalr (QuestHold$ + " questionnaire " + _
  1335.         MID$("answeredaborted",1 - 8 * ZQuestAborted,8),2)
  1336.      IF ReturnToPrompt THEN _
  1337.         RETURN
  1338.      GOTO 1401
  1339. '
  1340. ' *****    Toggle COMMAND (UTILITIES)     ****
  1341. '
  1342. 1500 IF ZAnsIndex < ZLastIndex THEN _
  1343.         GOTO 1510
  1344.      ZOutTxt$ = "A)utodwnld   B)ullet  C)ase     F)ile   H)ilite"
  1345.      CALL ColorPrompt (ZOutTxt$)
  1346.      CALL QuickTPut1 (ZOutTxt$)
  1347.      ZOutTxt$ = "L)ine feeds  N)ulls   T)urboKey X)pert  !)bell"
  1348.      CALL ColorPrompt (ZOutTxt$)
  1349.      CALL QuickTPut1 (ZOutTxt$)
  1350.      ZOutTxt$ = "Toggle which options On/Off?" + ZPressEnter$
  1351. 1510 GOSUB 12930
  1352.      IF ZWasQ = 0 THEN _
  1353.         RETURN
  1354.      ZWasZ$ = ZUserIn$(ZAnsIndex)
  1355.      CALL AllCaps (ZWasZ$)
  1356.      ZFF = INSTR("ABCFHLNTX!",ZWasZ$)
  1357.      IF ZFF < 1 THEN _
  1358.         GOTO 1500
  1359.      CALL Toggle (ZFF)
  1360.      GOSUB 12997
  1361.      GOTO 1500
  1362. '
  1363. ' ****  I - COMMAND FROM MAIN MENU (DISPLAY INITIAL WELCOME)  ***
  1364. '
  1365. '
  1366. ' ****  I - COMMAND FROM MAIN MENU (DISPLAY InitIAL WELCOME)  ***
  1367. '
  1368. 1525 CALL SkipLine (2)
  1369.      CALL QuickTPut(ZFG1$+"Review System Screens Available:",1)   ' Bh
  1370.      CALL QuickTPut(ZFG4$+"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",2)
  1371.      CALL QuickTPut(ZFG2$+"P)relog Screen",1)
  1372.      CALL QuickTPut(ZFG3$+"W)elcome Screen",1)
  1373.      CALL QuickTPut(ZFG4$+"L)atest News About " + ZRBBSName$,1)   ' Bh 090890
  1374.      CALL QuickTPut(ZFG1$+"Y)our Access Level",1)
  1375.      CALL QuickTPut(ZFG2$+"N)ew User Sign-On",1)
  1376. ZOutTxt$ = "Please make a Selection (or [RETURN] to quit) "
  1377.         ZSubParm = 1
  1378.         ZTurboKey = -ZTurboKeyUser
  1379.         CALL TGet
  1380.         CALL AllCaps (ZUserIn$)
  1381.         WasMplX = INSTR("PWLYNQ",ZUserIn$)
  1382.         IF ZUserIn$ = "" THEN _
  1383.            GOTO 1596
  1384.     ON WasMplX GOTO 1530,1533,1536,1539,1541,1596
  1385. 1530 ZFileName$ = ZPreLog$
  1386.      GOTO 1550
  1387. 1533 ZFileName$ = ZWelcomeFile$
  1388.      GOTO 1550  
  1389. 1536 ZFileName$ = ZWelcomeFileDrvPath$ + "LATEST.NWS"     ' Bh 090890
  1390.      GOTO 1550
  1391. 1539 GOSUB 465 
  1392.      GOTO 1525
  1393. 1541 ZFileName$ = ZNewUserFile$
  1394. 1550 GOSUB 1790
  1395.      CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)
  1396.      GOTO 1525
  1397. 1596 RETURN
  1398. '
  1399. 1790 CALL Graphic (ZUserGraphicDefault$,ZFileName$)
  1400.      CALL BufFile (ZFileName$,WasX)
  1401.      CALL Carrier
  1402.      IF ZSubParm = -1 THEN _
  1403.         RETURN 10595
  1404.      RETURN
  1405. '
  1406. ' ***  C - COMMAND FROM MAIN MENU (LEAVE COMMENT FOR SYSOP)   **
  1407. '
  1408. 1800 MsgTo$ = "SYSOP"
  1409.      OrigSubject$ = "COMMENT"
  1410.      GOSUB 1893
  1411.      IF (ActiveMessages >= MaxMsgs OR _
  1412.         ((NOT ZMsgsCanGrow) AND _
  1413.         (ZNextMsgRec + 5 > HighestMsgRecord)) OR _
  1414.         NOT ZCmntsAsMsgs ) THEN _
  1415.         ZOutTxt$ = "Would you like to leave a comment for the Sysop? (Y/[N])" : _   ' Bh
  1416.         GOSUB 12999 : _
  1417.         IF NOT ZYes THEN _
  1418.            CALL SkipLine (1) : _
  1419.            RETURN _
  1420.         ELSE ZSysopComment = ZTrue : _
  1421.              GOTO 2007
  1422.      ZSysopComment = ZFalse
  1423.      SysopMsg = ZTrue
  1424.      ZMsgHeader$ = "comment"
  1425.      MsgFrom$ = ZActiveUserName$
  1426.      GOTO 2010
  1427. 1850 WasBX = &H3
  1428.      ZWasEN$ = ZCmntsFile$
  1429.      GOSUB 12992
  1430.      CALL OpenWorkA (ZCmntsFile$)
  1431.      ZOutTxt$ = ZFirstName$ + _
  1432.           ", Thanks for comments!"
  1433.      GOSUB 12976
  1434.      CALL AMorPM
  1435.      CALL PrintWorkA (ZActiveUserName$+" "+ZCurDate$+" "+ZTime$+" Node "+ZNodeID$)
  1436.      FOR WasX = 1 TO ZLinesInMsg
  1437.         CALL PrintWorkA (ZOutTxt$(WasX))
  1438.      NEXT
  1439.      CALL PrintWorkA (ZCarriageReturn$)
  1440.      CLOSE 2
  1441.      IF ZErrCode <> 0 THEN _
  1442.         ZWasEL = 1850 : _
  1443.         GOTO 13000
  1444.      WasBX = &H3
  1445.      ZWasEN$ = ZCmntsFile$
  1446.      GOSUB 12993
  1447.      CALL UpdtCalr ("Left comment",1)
  1448.      REDIM ZOutTxt$(ZMsgDim)
  1449. IF LogOff$ = "G" THEN 10562         ' Pe 02/03/90
  1450.      RETURN
  1451. '
  1452. ' ****  P - COMMAND FROM MAIN MENU (DISPLAY PERSONAL MAIL)  ****
  1453. '
  1454. 1892 GOSUB 1900                                  'Pe 02/11/89
  1455.      CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)   'Pe 02/11/89
  1456.      RETURN                                      'Pe 02/11/89
  1457. 1893 ActionFlag = ZTrue
  1458.      GOTO 1897
  1459. 1895 IF TurboLogon THEN _
  1460.         RETURN
  1461.      ZUserIn$(0) = LEFT$("NEW ",-4*LogonMailNew)
  1462. 1897 IF ZActiveMessageFile$ = ZPrevBase$ THEN _
  1463.         ActionFlag = ZFalse : _
  1464.         RETURN
  1465. 1900 GOSUB 5344
  1466.      IF ZPrivateDoor THEN _
  1467.         ActionFlag = ZTrue
  1468.      ZPrevBase$ = ZActiveMessageFile$
  1469.      ShowActive = ZFalse
  1470.      IF NOT ActionFlag THEN _
  1471.         CALL QuickTPut ("Checking messages in " + ConfFileName$,0) : _
  1472.         ShowActive = ZTrue _
  1473.      ELSE CALL QuickTPut ("Loading messages",0)
  1474.      WasA1$ = ""                'KG030801
  1475.      MsgCt = 0
  1476.      MsgsFromUser = ZFalse
  1477.      ActiveMessages = 0
  1478.      MailReported = ActionFlag
  1479.      FirstOld = ZTrue
  1480.      GOSUB 23000
  1481.      MsgRec = FirstMsgRecord
  1482.      MaxMsgs = VAL(MID$(ZMsgRec$,89,7))
  1483.      IF MaxMsgs > WasMM THEN _
  1484.         MaxMsgs = WasMM
  1485.      REDIM ZMsgPtr(MaxMsgs,2)
  1486.      NumDots = 0
  1487. 1905 GET 1,MsgRec
  1488.      CALL CheckInt (MID$(ZMsgRec$,117,4))
  1489.      IF ZErrCode <> 0 THEN _
  1490.         ZWasEL = 1905 : _
  1491.         GOTO 13000
  1492.      NumRecsInMsg = VAL(MID$(ZMsgRec$,117,4))
  1493.      IF NumRecsInMsg < 1 THEN _
  1494.         NumRecsInMsg = 1
  1495. 1906 IF ActionFlag OR (FirstOld AND NOT MailReported) THEN _
  1496.         CALL MarkTime (NumDots)
  1497.      CALL Carrier
  1498.      IF ZSubParm = -1 THEN _
  1499.         RETURN 10595
  1500. 1910 IF MsgRec >= ZNextMsgRec THEN _
  1501.         LowMsgNumber = ZMsgPtr(1,2) : _
  1502.         GOTO 1950
  1503. 1915 IF MID$(ZMsgRec$,116,1) <> ZActiveMessage$ THEN _
  1504.         GOTO 1946
  1505.      WasX$ = MID$(ZMsgRec$,121,2)
  1506.      IF WasX$ <> "  " THEN _
  1507.         IF CVI(WasX$) > ZUserSecLevel THEN _
  1508.            GOTO 1945
  1509.      IF ActionFlag THEN _
  1510.         GOTO 1935
  1511. '
  1512. ' ** ALLOW USERS WITH NAMES LONGER THAN 22 CHARS TO RECEIVE PRIVATE MAIL *
  1513. '
  1514. 1920 GOSUB 4660
  1515.      IF NOT UserInHeader THEN _
  1516.         GOTO 1945
  1517.      IF MsgToCaller THEN _
  1518.         GOTO 1925
  1519.      GOTO 1940
  1520. 1925 ZWasA = VAL(MID$(ZMsgRec$,2,4))
  1521.      IF LogonMailNew THEN _
  1522.         IF ZWasA <= ZLastMsgRead THEN _
  1523.            GOTO 1935
  1524.      IF NOT ShowActive THEN _
  1525.         GOTO 1930
  1526.      MailReported = ZTrue
  1527.      FirstNew = (ZWasA > ZLastMsgRead)
  1528.      IF FirstNew THEN _
  1529.         MsgCt = 0 : _                                                ' KG030203
  1530.         CALL SkipLine (1) : _
  1531.         CALL QuickTPut1 (CHR$(7)+"NEW Mail for YOU (* = Private)") _   ' Bh
  1532.      ELSE IF FirstOld THEN _
  1533.              CALL SkipLine (1) : _
  1534.              CALL QuickTPut1 ("OLD Mail for YOU (* = Private)") : _
  1535.              FirstOld = ZFalse
  1536.      ShowActive = NOT FirstNew
  1537. 1930 CALL QuickTPut (LEFT$(ZMsgRec$,5),0)
  1538.      MsgCt = MsgCt + 1                                               ' KG030203
  1539.      IF MsgCt MOD 15 = 0 THEN _                                      ' KG030203
  1540.         CALL SkipLine (1) : _                                        ' KG030203
  1541.         CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)                     ' KG030203
  1542. 1935 IF NOT MsgFromCaller THEN _
  1543.         GOTO 1945
  1544. 1940 IF MsgsFromUser < ZMsgDim THEN _
  1545.         MsgsFromUser = MsgsFromUser + 1 : _
  1546.         WasA1$ = WasA1$ + LEFT$(ZMsgRec$,5)                          ' KG030801
  1547. 1945 ActiveMessages = ActiveMessages + 1
  1548.      ZMsgPtr(ActiveMessages,1) = MsgRec
  1549.      ZMsgPtr(ActiveMessages,2) = VAL(MID$(ZMsgRec$,2,4))
  1550. 1946 MsgRec = MsgRec + NumRecsInMsg
  1551.      GOTO 1905
  1552. 1950 IF NOT MailReported THEN _
  1553.         ZOutTxt$ = "Sorry, " + _
  1554.              ZFirstName$ + _
  1555.              ", No " + ZUserIn$(0) + "Mail for you" : _
  1556.         GOSUB 12975
  1557.      IF MsgsFromUser = 0 OR NOT ZMsgReminder THEN _
  1558.         GOTO 1961
  1559.      IF ActionFlag THEN _
  1560.         GOTO 1961
  1561.      ZOutTxt$ = "Mail you left"
  1562.      GOSUB 12976
  1563. 1960 WasK = 1
  1564.      FOR MsgCt = 1 TO MsgsFromUser                                   ' KG030203
  1565.         ZOutTxt$ = MID$(WasA1$,WasK,5)                               ' KG030801
  1566.         WasK = WasK + 5
  1567.         GOSUB 12978
  1568.         IF MsgCt MOD 15 = 0 THEN _                                   ' KG030203
  1569.            CALL SkipLine (1) : _                                     ' KG030203
  1570.            CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue)                  ' KG030203
  1571.      NEXT
  1572.      WasA1$ = ""                                 ' KG030203
  1573.      CALL SkipLine (1)
  1574.      CALL QuickTPut1 ("Please K)ill old/unneeded msgs")
  1575. 1961 ActionFlag = ZFalse
  1576.      CALL SkipLine (1)
  1577.      RETURN
  1578. '
  1579. ' ****  E - COMMAND FROM MAIN MENU (ENTER MESSAGE)  ***
  1580. '
  1581. 2000 QuotedReply = ZFalse
  1582.      MsgFrom$ = ZActiveUserName$
  1583. 2001 IF (LowMsgNumber > 0 AND ActiveMessages = MaxMsgs) _
  1584.         OR HighMsgNumber >= 9999 THEN _
  1585.         IF ZActiveMessageFile$ = ZMainMsgFile$ AND _
  1586.            ActiveMessages = 1 THEN _
  1587.            GOTO 5300 _
  1588.         ELSE ZOutTxt$ = "No more messages allowed!  Try tomorrow" : _
  1589.              GOSUB 12975 : _
  1590.              GOTO 3650
  1591. 2006 IF NOT (ZReply OR MsgFwd) THEN _
  1592.         MsgPswd$ = ""
  1593.      ZSysopComment = ZFalse
  1594.      IF ZReply OR MsgFwd THEN SaveAnsIndex = ZAnsIndex
  1595.      IF MsgFwd OR NOT ZReply THEN MsgTo$ = ""
  1596. 2007 IF ZSysopComment THEN _
  1597.         ZWasZ$ = ZCmntsFile$ : _
  1598.         ZMsgHeader$ = "comment" _
  1599.      ELSE ZWasZ$ = ZActiveMessageFile$ : _
  1600.           ZMsgHeader$ = "message"
  1601. 2008 IF ZSysopComment OR ZMsgsCanGrow THEN _
  1602.         ZWasY$ = "on disk" : _
  1603.         CALL FindFree : _
  1604.         GOTO 2009
  1605.      IF ZNextMsgRec + 3 < HighestMsgRecord THEN _
  1606.         GOTO 2010
  1607.      ZWasY$ = "in file"
  1608.      ZFreeSpace$ = "1"
  1609. 2009 IF VAL(ZFreeSpace$) >= 2000 THEN _
  1610.         GOTO 2010
  1611.      ZOutTxt$ = "No room " + ZWasY$ + " for " + ZMsgHeader$
  1612.      GOSUB 12979
  1613.      GOTO 3650
  1614. 2010 IF NOT QuotedReply THEN _
  1615.         ZLinesInMsg = 0 : _
  1616.         ZCommPortStack$ = "" : _
  1617.         WasL = 0 : _
  1618.         WasX = 0 : _
  1619.         REDIM ZOutTxt$(ZMsgDim)
  1620.      IF ZGetExtDesc THEN _
  1621.         GOTO 2100
  1622.      GOSUB 1893
  1623.      RcvrRecNum = 0
  1624. 2020 CALL MessageTo (HighestUserRecord,MsgTo$,MsgFrom$,RcvrRecNum,Found)
  1625.      IF MsgTo$ = "" THEN _
  1626.         RETURN
  1627.      IF ZSysopComment THEN _
  1628.         GOTO 2100
  1629.      IF SysopMsg THEN _
  1630.         SysopMsg = ZFalse : _
  1631.         MsgPswd$ = "^READ^" : _
  1632.         GOTO 2100
  1633.      IF ZReply OR MsgFwd THEN _
  1634.         Found = ZTrue : _
  1635.         CALL Trim (MsgTo$):  _
  1636.         GOTO 2035 _
  1637.      ELSE Subject$ = ""
  1638.      GOSUB 2065
  1639. 2035 CALL MsgProt (MsgTo$,Found,MsgPswd$)
  1640.      IF MsgPswd$ = "" THEN _
  1641.         GOTO 2020
  1642.      IF QuotedReply THEN _
  1643.         RETURN
  1644.      GOTO 2100
  1645. '
  1646. ' *****  SET/CHANGE SUBJECT FOR A MESSAGE   ***
  1647. '
  1648. 2065 IF Subject$ <> "" THEN _
  1649.         ZOutTxt$ = "Change Subject from " + _
  1650.              Subject$ + _
  1651.              " to" : _
  1652.         GOSUB 12932 _
  1653.      ELSE ZOutTxt$ = "Subject" : _
  1654.           ZParseOff = ZTrue : _
  1655.           GOSUB 12932
  1656.      IF LEN(ZUserIn$) > 25 THEN _
  1657.         ZOutTxt$ = "25 Char. Max" : _
  1658.         GOSUB 12979 : _
  1659.         GOTO 2065
  1660.      IF ZWasQ = 0 THEN _
  1661.         IF Subject$ <> "" THEN _
  1662.            RETURN _
  1663.         ELSE GOSUB 2435 : _
  1664.              IF ZYes THEN _
  1665.                 RETURN 5160 _
  1666.              ELSE GOTO 2065
  1667.      Subject$ = ZUserIn$
  1668.      CALL AllCaps (Subject$)
  1669.      OrigSubject$ = Subject$
  1670.      RETURN
  1671. '
  1672. ' *****  ENTER MAIN BODY OF MESSAGE  ****
  1673. '
  1674. '
  1675. '* ------[ first line different ]------
  1676. '2100 GOSUB 2101                                                'ANSIEd
  1677. '     IF NOT ZYes THEN _
  1678. '        GOTO 2120
  1679. '     GOTO 2110
  1680. ''* INSERTING new line(s)
  1681. '2101 IF NOT ZGetExtDesc THEN    'Pe 03/14/90
  1682. '        ZOutTxt$ = "Use the Full Screen Editor (Y,[N])"
  1683. '        GOSUB 12930
  1684. '     END IF
  1685. '     RETURN
  1686. '2110 CALL Ansied
  1687. '     I = ZSubParm
  1688. '     CALL SkipLine(1)
  1689. '     IF I = -2 THEN      ' Sleep Disconnect
  1690. '        GOTO 10590
  1691. '     ELSEIF I = -1 THEN  ' Lost Carrier
  1692. '        GOTO 10595
  1693. '     ELSEIF I = 1 THEN   ' Save Message
  1694. '        GOTO 3400
  1695. '     ELSEIF I = 2 THEN   ' Abort Message
  1696. '        GOTO 2430
  1697. '     END IF                                    'End of AnsiEd additions
  1698. 2100 ZOutTxt$ = "Type " + _           'Was 2100 in 17.3   ' Still is Bh 110790
  1699.           ZMsgHeader$ + _
  1700.           STR$(ZMaxMsgLines) + _
  1701.           " lines max" + _
  1702.           ZPressEnter$
  1703.      GOSUB 12975
  1704.      GOSUB 3200
  1705. 2125 ZLinesInMsg = ZLinesInMsg + 1
  1706. 2127 IF ZRemoteEcho OR ZLocalUser THEN _
  1707.         ZOutTxt$ = RIGHT$(STR$(ZLinesInMsg),2) + _
  1708.              ": " + _
  1709.              ZOutTxt$(ZLinesInMsg) _
  1710.      ELSE ZOutTxt$ = ZOutTxt$(ZLinesInMsg)
  1711.      GOSUB 12978
  1712.      CALL LineEdit(ZLinesInMsg,ZRightMargin + 1)
  1713.      IF ZWaitExpired THEN _
  1714.         GOTO 10590 _
  1715.      ELSE IF ZSubParm = -1 THEN _
  1716.              GOTO 10595
  1717.      CALL FindFKey
  1718.      IF ZSubParm < 0 THEN _
  1719.         GOTO 202
  1720.      IF ZOutTxt$(ZLinesInMsg) = "" THEN _
  1721.         ZLinesInMsg = ZLinesInMsg - 1 : _
  1722.         GOTO 2300
  1723. 2140 WasJ = ZLinesInMsg
  1724.      GOSUB 2200
  1725.      IF WasX THEN _
  1726.         GOTO 2300
  1727.      GOTO 2125
  1728. 2200 WasX = 0
  1729.      IF WasJ < (ZMaxMsgLines - 2) THEN _
  1730.         RETURN
  1731.      ZOutTxt$ = MID$("2 lines leftLast line   Full",12 * (WasJ-(ZMaxMsgLines - 2)) + 1,12)
  1732.      WasX = (WasJ > (ZMaxMsgLines - 1))
  1733. 2210 GOSUB 12979
  1734.      RETURN
  1735. '
  1736. ' *****  FINAL MESSAGE DISPOSITION   ****
  1737. '
  1738. 2300 IF NOT ZExpertUser THEN _
  1739.         CALL QuickTPut1 (ZCrLf$ +"A)bort," + LEFT$("B)tch Import,",-13 * (ZSysop OR ZLocalUser)) + "C)ont,D)el,E)dit,I)nsert,L)ist,M)argin,R)ev subj,S)ave")
  1740. 2315 ZOutTxt$ = ZCrLf$ +"Edit Sub-function <A," + _
  1741.           LEFT$("B,",-2 * (ZSysop OR ZLocalUser)) + _
  1742.           "C,D,E,I,L,M,R,S,?>"
  1743.      CALL SkipLine (1)
  1744.      GOSUB 12930
  1745.      IF ZWasQ = 0 THEN _
  1746.         GOTO 2315
  1747.      CALL AllCaps (ZUserIn$(ZAnsIndex))
  1748.      ZWasZ$ = ZUserIn$(ZAnsIndex)
  1749. 2330 ON INSTR("ABCDEILMRS?",ZWasZ$) GOTO 2400,2335,2332,2500,2600,2800,3000,3100,2440,3400,2345
  1750.      GOTO 2300
  1751. 2332 IF ZLinesInMsg < 1 THEN _
  1752.         ZLinesInMsg = 1
  1753.      GOTO 2127
  1754. 2335 WasX = ZLinesInMsg
  1755.      CALL MsgImport (ZMaxMsgLines,ZRightMargin,ZLinesInMsg,ZOutTxt$())
  1756.      IF ZLinesInMsg > WasX THEN _
  1757.         GOTO 3000 _
  1758.      ELSE GOTO 2300
  1759. '
  1760. ' *****  DISPLAY MESSAGE SUBCOMMANDS HELP FILE   ****
  1761. '
  1762. 2345 ZFileName$ = ZHelp$(4)
  1763.      GOSUB 1790
  1764.      GOTO 2315
  1765. 2350 CALL FindIt (ZMainPUI$)
  1766.      ZCustomPUI = ZOK
  1767.      IF ZOK THEN _
  1768.         ZCurPUI$ = ZMainPUI$ _
  1769.      ELSE ZCurPUI$ = ""
  1770. '     ZPrevPUI$ = ""               'ANSIEd     ' Bh 110790
  1771.      RETURN
  1772. '
  1773. ' ****  ABORT MESSAGE   ***
  1774. '
  1775. 2400 GOSUB 2435
  1776.      IF NOT ZYes THEN _
  1777.         GOTO 2300
  1778. 2430 ZOutTxt$ = "Aborted"
  1779.      GOSUB 12975
  1780.      ZABort = 1                 'Pe 02/03/90
  1781.      GOTO 3650
  1782. 2435 ZOutTxt$ = "Abort " + _
  1783.           ZMsgHeader$ + _
  1784.           " (Y/[N])"
  1785.      GOSUB 12995
  1786.      RETURN
  1787. '
  1788. ' *****  CHANGE SUBJECT OF A MESSAGE  ****
  1789. '
  1790. 2440 GOSUB 2065
  1791.      GOTO 2300
  1792. '
  1793. ' *****  (BLOCK) DELETE MESSAGE LINE(S)  *****
  1794. '
  1795. 2500 ZOutTxt$ = "Delete from"
  1796.      GOSUB 3300
  1797.      Mark1 = ZTestedIntValue
  1798. 2520 ZOutTxt$ = "Up to and including Line # (ENTER =" + STR$(Mark1) + " )"
  1799.      GOSUB 3302
  1800.      IF ZWasQ = 0 THEN _
  1801.         Mark2 = Mark1 _
  1802.      ELSE Mark2 = ZTestedIntValue
  1803.      CALL SkipLine(1)
  1804.      IF Mark1 > Mark2 THEN _
  1805.         ZOutTxt$ = "Begining exceeds End.  Block NOT deleted!" : _
  1806.         GOSUB 12979 : _
  1807.         GOTO 2555
  1808.      IF Mark1 <= MsgLockLines THEN _
  1809.         ZOutTxt$ = "You can NOT delete lines 1 -" + STR$(MsgLockLines) + "!" : _  ' DA120801
  1810.         GOSUB 12979 : _
  1811.         GOTO 2555
  1812. 2522 FOR WasX = Mark1 TO Mark2
  1813.         CALL AskMore ("",ZTrue,ZTrue,WasXX,ZFalse)
  1814.         IF ZNo OR ZRet THEN _
  1815.            WasX = Mark2 + 1 _
  1816.         ELSE ZOutTxt$ = ZOutTxt$(WasX) : _
  1817.            GOSUB 12977
  1818.      NEXT
  1819.      CALL SkipLine(1)
  1820. 2530 ZOutTxt$ = "Delete lines " + STR$(Mark1) + "-" + MID$(STR$(Mark2),2) + " (Y/[N])"
  1821.      GOSUB 12930
  1822.      IF NOT ZYes THEN _
  1823.         ZOutTxt$ = "NOT Deleted" : _
  1824.         GOSUB 12979 : _
  1825.         GOTO 2555
  1826. 2550 ZBlockSize = (Mark2 - Mark1) + 1
  1827.      EndOfBuffer = ZLinesInMsg + 1
  1828.      ZLinesInMsg = ZLinesInMsg - ZBlockSize
  1829.      FOR WasX = Mark1 TO ZLinesInMsg
  1830.         ZOutTxt$(WasX) = ZOutTxt$(WasX + ZBlockSize)
  1831.      NEXT
  1832.      FOR WasX = (ZLinesInMsg + 1) TO (EndOfBuffer)
  1833.         ZOutTxt$(WasX) = ""
  1834.      NEXT
  1835.      ZOutTxt$ = "Deleted" + STR$(ZBlockSize) + " line(s)"
  1836.      GOSUB 12979
  1837. 2555 Mark1 = 0
  1838.      Mark2 = 0
  1839.      GOTO 2300
  1840. '
  1841. ' ****  EDIT MESSAGE LINE  ***
  1842. '
  1843. 2600 ZOutTxt$ = "Edit"
  1844.      GOSUB 3300
  1845.      IF ZTestedIntValue <= MsgLockLines THEN _
  1846.         ZOutTxt$ = "Not permitted to change first" + _
  1847.                     STR$(MsgLockLines) + " line(s)" : _
  1848.         GOSUB 12979 : _
  1849.         GOTO 2300
  1850.      CALL EditALine (ZTestedIntValue)
  1851.      IF ZSubParm < 0 THEN _
  1852.         GOTO 202
  1853.      GOTO 2300
  1854. 2800 IF ZLinesInMsg >= ZMaxMsgLines AND NOT ZSysop THEN _
  1855.         ZOutTxt$ = "Message full" : _
  1856.         GOSUB 12979 : _
  1857.         GOTO 2300
  1858. 2820 ZOutTxt$ = "Insert Before" : _
  1859.      GOSUB 3300
  1860. 2830 WasLL = ZLinesInMsg
  1861.      WasK = ZLinesInMsg - ZTestedIntValue
  1862.      FOR WasX = ZTestedIntValue TO ZLinesInMsg
  1863.         ZUserIn$(WasX + 1 - ZTestedIntValue) = ZOutTxt$(WasX)
  1864.         ZOutTxt$(WasX) = ""
  1865.      NEXT
  1866.      ZLinesInMsg = ZTestedIntValue
  1867. 2840 ZOutTxt$ = RIGHT$(STR$(ZLinesInMsg),2) + _
  1868.           ": " + ZOutTxt$(ZLinesInMsg)
  1869.      GOSUB 12978
  1870.      CALL LineEdit(ZLinesInMsg,ZRightMargin + 1)
  1871.      IF ZOutTxt$(ZLinesInMsg) = "" THEN _
  1872.         GOTO 2920
  1873. 2870 ZLinesInMsg = ZLinesInMsg + 1
  1874.      WasJ = ZLinesInMsg + WasK - 1
  1875.      GOSUB 2200
  1876.      IF NOT WasX THEN _
  1877.         GOTO 2840
  1878. 2920 FOR WasX = 1 TO WasK + 1
  1879.         ZOutTxt$(ZLinesInMsg + WasX - 1) = ZUserIn$(WasX)
  1880.      NEXT
  1881.      REDIM ZUserIn$(ZMsgDim)
  1882.      ZLinesInMsg = WasLL + ZLinesInMsg - ZTestedIntValue
  1883.      GOTO 2300
  1884. '
  1885. ' *****  LIST MESSAGE CONTENTS   ****
  1886. '
  1887. 3000 GOSUB 3010
  1888.      GOTO 2300
  1889. 3010 ZStopInterrupts = ZFalse
  1890.      CALL SkipLine (1)
  1891.      IF ZWasQ = 1 OR MsgFwd THEN _
  1892.         WasL = 1 : _
  1893.         ZOutTxt$ = ZFG3$ + "To: " + _
  1894.              MsgTo$ + _
  1895.              ZFG4$ + " Re: " + _
  1896.              Subject$ + ZEmphasizeOff$ : _
  1897.         GOSUB 12979 : _
  1898.         CALL QuickTPut (MID$("    ",1,-4 * (NOT ZRemoteEcho)),0) : _
  1899.         GOSUB 3200
  1900. 3020 FOR WasX = WasL TO ZLinesInMsg
  1901.         CALL AskMore ("",ZTrue,ZTrue,WasXX,ZFalse)
  1902.         IF ZNo OR ZRet THEN _
  1903.            WasX = ZLinesInMsg + 1 _
  1904.         ELSE ZOutTxt$ = RIGHT$(STR$(WasX),2) + _
  1905.                   ": " + _
  1906.                   ZOutTxt$(WasX) : _
  1907.              GOSUB 12979
  1908.      NEXT
  1909.      RETURN
  1910. '
  1911. ' *****  CHANGE MARGIN WIDTH   ****
  1912. '
  1913. 3100 CALL SkipLine (1)
  1914.      ZOutTxt$ = "SET Right-Margin from" + _
  1915.           STR$(ZRightMargin) + _
  1916.           " TO (8...72)"
  1917.      GOSUB 12932
  1918.      IF LEN(ZUserIn$(ZAnsIndex)) > 2 THEN _
  1919.         GOTO 3140
  1920. 3130 WasX = VAL(ZUserIn$(ZAnsIndex))
  1921.      IF WasX > 7 AND WasX < 73 THEN _
  1922.         ZRightMargin = WasX : _
  1923.         ZOutTxt$ = "Margin now" + _
  1924.              STR$(ZRightMargin) : _
  1925.         GOTO 3150
  1926. 3140 ZOutTxt$ = "Invalid - Margin UNCHANGED"
  1927. 3150 GOSUB 12979
  1928.      IF UtilMarginChange THEN _
  1929.         RETURN
  1930.      GOTO 2300
  1931. 3200 ZOutTxt$ = "[" + _
  1932.           STRING$(ZRightMargin - 2,45) + _
  1933.           "]"
  1934.      IF ZRemoteEcho OR ZLocalUser THEN _
  1935.         ZOutTxt$ = "    " + _
  1936.              ZOutTxt$
  1937.      GOSUB 12975
  1938.      RETURN
  1939. 3300 ZOutTxt$ = ZOutTxt$ + " Line #" + ZPressEnter$
  1940. 3302 CALL SkipLine (-(ZAnsIndex >= ZLastIndex))
  1941.      GOSUB 12932
  1942.      IF ZWasQ = 0 THEN _
  1943.         IF Mark1 = 0 THEN _
  1944.            RETURN 2300 _
  1945.         ELSE RETURN
  1946.      CALL CheckInt (ZUserIn$(ZAnsIndex))
  1947.      IF ZErrCode = 0 THEN _
  1948.         IF ZTestedIntValue >= 1 THEN _
  1949.            IF ZTestedIntValue <= ZLinesInMsg THEN _
  1950.               RETURN
  1951.      ZOutTxt$ = "No such line #" + STR$(ZTestedIntValue)
  1952.      GOSUB 12979
  1953.      RETURN 2300
  1954. '
  1955. ' ****  SAVE MESSAGE   ***
  1956. '
  1957. 3400 IF ZGetExtDesc THEN _
  1958.         ZSysopComment = ZFalse : _
  1959.         RETURN
  1960.      IF ZSysopComment THEN _
  1961.         ZSysopComment = ZFalse : _
  1962.         GOTO 1850
  1963. 3405 GOSUB 4910
  1964.      MsgRecSave$ = ZMsgRec$
  1965.      MsgCorrected = ZFalse
  1966.      GOSUB 23100
  1967.      ZOutTxt$ = "Adding new msg #" + _
  1968.           STR$(HighMsgNumber + 1)
  1969.      IF NOT ZLocalUser THEN _
  1970.         CALL UpdtCalr (ZOutTxt$,1)
  1971.      GOSUB 12978
  1972.      ZWasSL = 0
  1973.      ZWasN$ = ""
  1974.      ZLastIndex = 0
  1975.      IF LowMsgNumber = 0 THEN _
  1976.         LowMsgNumber = 1 : _
  1977.         HighMsgNumber = 1 _
  1978.      ELSE HighMsgNumber = HighMsgNumber + 1
  1979. 3410 ActiveMessages = ActiveMessages + 1
  1980.      MsgNum$ = STR$(HighMsgNumber) + _
  1981.                        SPACE$(5 - LEN(STR$(HighMsgNumber)))
  1982.      IF MsgPswd$ = "^READ^" THEN _
  1983.         MID$(MsgNum$,1,1) = "*" : _
  1984.         SecForMsg = ZPrivateReadSec _
  1985.      ELSE SecForMsg = ZPublicReadSec
  1986. 3460 IF NOT MsgFwd THEN _
  1987.         MsgFrom$ = LEFT$(ZActiveUserName$ + SPACE$(31),31) _
  1988.      ELSE _
  1989.         MsgFrom$ = LEFT$(MsgFrom$ + SPACE$(31),31)
  1990.      MsgTo$ = LEFT$(MsgTo$ + SPACE$(31),31)
  1991.      MID$(MsgTo$,23,8) = TIME$
  1992.      Subject$ = LEFT$(OrigSubject$ + SPACE$(25),25)
  1993.      MsgPswd$ = LEFT$(MsgPswd$ + SPACE$(15),15)
  1994.      IF QuotedReply AND _
  1995.         ZLinesInMsg > ZMaxMsgLines THEN _
  1996.            ZLinesInMsg = ZMaxMsgLines
  1997.      FOR WasJ = 1 TO ZLinesInMsg
  1998.         ZOutTxt$(WasJ) = ZOutTxt$(WasJ) + _
  1999.                 CHR$(227)
  2000.         ZWasSL = ZWasSL + LEN(ZOutTxt$(WasJ))
  2001.      NEXT
  2002.      IF ZWasSL MOD 128 = 0 THEN _
  2003.         ZWasN$ = STR$(ZWasSL \ 128 + 1) _
  2004.      ELSE ZWasN$ = STR$(ZWasSL \ 128 + 2)
  2005. 3530 Temp = ZNextMsgRec
  2006.      ZNextMsgRec = Temp + VAL(ZWasN$)
  2007.      LSET ZMsgRec$ = MsgRecSave$
  2008.      GOSUB 24000
  2009.      GET 1,Temp
  2010.      ZMsgPtr(ActiveMessages,1) = Temp
  2011.      ZMsgPtr(ActiveMessages,2) = HighMsgNumber
  2012.      LSET ZMsgRec$ = MsgNum$ + _
  2013.                      MsgFrom$ + _
  2014.                      MsgTo$ + _
  2015.                      ZCurDate$ + _
  2016.                      Subject$ + _
  2017.                      MsgPswd$ + _
  2018.                      ZActiveMessage$ + _
  2019.                      ZWasN$ + _
  2020.                      SPACE$(4 - LEN(ZWasN$)) + _
  2021.                      MKI$(SecForMsg)
  2022.      PUT 1,Temp
  2023.      ZWasN$ = ""
  2024.      NumDots = 0
  2025.      FOR WasJ = 1 TO ZLinesInMsg
  2026.         CALL MarkTime (NumDots)
  2027.         ZWasN$ = ZWasN$ + _
  2028.              ZOutTxt$(WasJ)
  2029.         IF LEN(ZWasN$) > 127 THEN _
  2030.            LSET ZMsgRec$ = ZWasN$ : _
  2031.            PUT 1 : _
  2032.            ZWasN$ = MID$(ZWasN$,129)
  2033. 3630 NEXT
  2034.      IF LEN(ZWasN$) > 0 THEN _
  2035.         LSET ZMsgRec$ = ZWasN$ : _
  2036.         PUT 1
  2037.      REDIM ZOutTxt$(ZMsgDim)
  2038.      IF MsgCorrected THEN _
  2039.         MsgCorrected = ZFalse : _
  2040.         ActionFlag = ZTrue : _
  2041.         CALL SkipLine (1) : _
  2042.         GOSUB 1900
  2043. 3640 CALL SkipLine (1)
  2044.      GET 1,1
  2045.      GOSUB 12985
  2046. ' ---[ notify receiver that has new mail waiting ]---
  2047.      IF RcvrRecNum > 0 THEN _
  2048.         UserFileIndexSave = ZUserFileIndex : _
  2049.         UserRecordHold$ = ZUserRecord$ : _
  2050.         ZUserFileIndex = RcvrRecNum : _
  2051.         GOSUB 12989 : _
  2052.         GET 5, RcvrRecNum : _
  2053.         WasX = CVI(MID$(ZUserRecord$,57,2)) : _
  2054.         MID$(ZUserRecord$,57,2) = MKI$(WasX OR 512) : _
  2055.         PUT 5, RcvrRecNum : _
  2056.         GOSUB 12991 : _
  2057.         ZUserFileIndex = UserFileIndexSave : _
  2058.         LSET ZUserRecord$ = UserRecordHold$ : _
  2059.         CALL QuickTPut1 ("Receiver will be notified of new mail") : _
  2060.         RcvrRecNum = 0
  2061. 3650 QuotedReply = ZFalse
  2062. '************************ MESSAGE THREAD *****************
  2063.  IF ZReply AND ZAbort = 0 THEN _                 'Pe 02/03/90
  2064.   CALL THREAD1(HighMsgNumber,CurMsg,ZConfName$)
  2065.       ZAbort = 0
  2066. '*********************************************************
  2067.      MsgLockLines = 0
  2068.      IF ZReply OR MsgFwd THEN _
  2069.         ZReply = ZFalse : _
  2070.         ZAnsIndex = SaveAnsIndex : _
  2071.         GOTO 5344
  2072.      IF ZGetExtDesc THEN _
  2073.         ZLinesInMsg = 0 : _
  2074.         RETURN
  2075. If LogOff$ = "G" Then 10562 'Pe 02/03/90
  2076.      RETURN 1200
  2077. '
  2078. ' ****  K - COMMAND FROM MAIN MENU (KILL MESSAGE)  ***
  2079. '
  2080. 3900 ZKillMessage = ZFalse
  2081.      CALL SkipLine (1)
  2082. 3930 ZOutTxt$ = "Msg #(s) to Kill" + ZPressEnterExpert$
  2083.      GOSUB 12932
  2084.      IF ZWasQ = 0 THEN _
  2085.         RETURN
  2086.      GOSUB 1893
  2087. 3935 CALL CheckInt (ZUserIn$(ZAnsIndex))
  2088.      IF ZErrCode <> 0 THEN _
  2089.         GOTO 3930
  2090.      MsgToKill = ZTestedIntValue
  2091. 3950 GOSUB 5344
  2092.      CALL KillMsg (MsgToKill,ActiveMessages,ZconfName$)   'Pe 02/03/90
  2093. 4040 IF ZKillMessage THEN _
  2094.         RETURN
  2095.      GOTO 3930
  2096. '
  2097. ' ****  Sysop Available toggle
  2098. '
  2099. 4130  ZSubParm = -8
  2100.       CALL FindFKey
  2101.       ZSubParm = 0
  2102.       RETURN
  2103. '
  2104. ' ****  X)pert Toggle
  2105. '
  2106. 4240 CALL Toggle(9)
  2107.      RETURN
  2108. '  ****************************************************************************
  2109. '  *  Ask users who have NOT Read all new messages do they want to NOW!       *
  2110. '  *  Carrage Return Defaults to [Y]es                                        *
  2111. '  ****************************************************************************
  2112. 4275 ZOutTxt$ = "There are New Message since last call, Read them now ? ([Y]/N) "
  2113.      GOSUB 12999                            'JABASKMAIL
  2114. 4279 IF NOT ZNO THEN _                                              'JABASKMAIL
  2115.      ZLastIndex = 2 : _               'Pe 11/05/89
  2116.      ZAnsIndex = 1 : _                'Pe 11/05/89
  2117.     ZWasQ = 2 : _                      'Pe 11/05/89
  2118.      ZUserIn$(2) = "*" :_                   'Pe 11/05/89
  2119.      GOTO 4330                        'Pe 11/05/89
  2120.      RETURN                            'JABASKMAIL
  2121. '
  2122. '
  2123. '**** T)ype ASCII file *****   Pe/10/22/89
  2124. '
  2125. 4320     ZLastIndex = Q 
  2126.          ZAnsIndex = 1  
  2127.          CALL TypeFile 
  2128.          RETURN
  2129.  
  2130. '
  2131. ' ****  R - COMMAND FROM MAIN MENU (READ MESSAGES)  ****
  2132. '
  2133. 4330 QuickScanMsgs = ZFalse
  2134.      ReadMsgs = ZTrue
  2135.      HiLiteRec = -1
  2136.      ScanMsgs = ZFalse
  2137.      MsgStart = 6
  2138.      MsgEnd = 100
  2139.      IF ZLocalUserMode OR NOT ZLocalUser THEN _
  2140.         IF ReadMsgIn$ <> ZActiveMessageFile$ THEN _
  2141.            ReadMsgIn$ = ZActiveMessageFile$ : _
  2142.            CALL UpdtCalr ("Read Messages in " + ReadMsgIn$,1)
  2143.      GOSUB 1300
  2144.      GOTO 4350
  2145.  
  2146. ' ****  S - COMMAND FROM MAIN MENU (SCAN MESSAGE HEADERS)  ***
  2147. '
  2148. 4340 IF ZWasQ < 2 THEN _
  2149.         GOSUB 1300
  2150. 4345 QuickScanMsgs = ZFalse
  2151.      ReadMsgs = ZFalse
  2152.      ScanMsgs = ZTrue
  2153.      MsgStart = 6
  2154.      MsgEnd = 100
  2155.      SecIndex = 0
  2156. '
  2157. ' ** MESSAGE READ MAINLINE (QUICK SCAN, READ & SCAN) ALL USE THIS ROUTINE *
  2158. '
  2159. 4350 SearchHeader$ = ""
  2160.      SubInHeader$ = ""
  2161.      SelectByNumber = ZFalse                                       'Pe 02/25/90
  2162. 4352 SearchString$ = ""
  2163.      DontPrint = ZFalse
  2164.      JustReplied = ZFalse
  2165.      QuotedReply = ZFalse
  2166.      AddressedToUser = ZFalse
  2167.      CanKill = (ZSysop OR ZUserSecLevel >= ZSecKillAny)
  2168.      GOSUB 1893
  2169.      GOSUB 5344
  2170.      ZWasZ$ = ""
  2171.      FOR WasI = 2 TO ZWasQ
  2172.         IF INSTR("Ss*",ZUserIn$(WasI)) > 0 THEN _
  2173.            ZUserIn$(WasI) = MID$(STR$(ZLastMsgRead+1),2) + "+"
  2174.         IF INSTR("Ll",ZUserIn$(WasI)) > 0 THEN _
  2175.            ZUserIn$(WasI) = MID$(STR$(HighMsgNumber),2) + "-"
  2176.      NEXT
  2177. 4360 ZWasLG$(11) = ZWasZ$
  2178.      NumMsgsSelected = ZLastIndex
  2179.      MsgIndex = ZAnsIndex
  2180.      ZLastIndex = 0
  2181.      ToRequested = ZFalse
  2182.      FromRequested = ZFalse
  2183.      IF ZPageLength < 1 THEN _
  2184.         ZNonStop = ZTrue
  2185. 4370 MsgIndex = MsgIndex  + 1
  2186. 4371 IF MsgIndex <= NumMsgsSelected THEN _
  2187.         IF LEN(ZUserIn$(ZAnsIndex)) = 1 AND _
  2188.            INSTR("Cc",ZUserIn$(MsgIndex)) > 0 THEN _
  2189.            GOTO 4370 _
  2190.         ELSE _
  2191.         CALL CheckInt (ZUserIn$(MsgIndex)) : _
  2192.         IF ZErrCode <> 0 THEN _
  2193.            ZWasEL = 4371 : _
  2194.            GOTO 13000 _
  2195.         ELSE CurMsg = ZTestedIntValue : _
  2196.              ZAnsIndex = MsgIndex : _
  2197.              GOTO 4415
  2198. 4380 ZNonStop = (ZPageLength < 1)
  2199.      ZOutTxt$ = ""
  2200. 'WasA1$ = WasA1$+ ZCrLf$ + " N - Go to a specific msg number"
  2201.        WasA1$ = ""                                                 'Tkey *
  2202. WasA1$ = "Just type in MSG NUMBER to read--
  2203. WasA1$ = WasA1$+ ZCrLf$ + "(E.g.: 387   reads 387 only;"
  2204. WasA1$ = WasA1$+ ZCrLf$ + "       387+  reads forward beginning at 387;"
  2205. WasA1$ = WasA1$+ ZCrLf$ + "       387-  reads backward beginning at 387)"
  2206. WasA1$ = WasA1$+ ZCrLf$ + "        "
  2207. WasA1$ = WasA1$+ ZCrLf$ + "Or choose from these options:"
  2208. WasA1$ = WasA1$+ ZCrLf$ + " A - ALL msgs"                                          ' Bh
  2209. WasA1$ = WasA1$+ ZCrLf$ + " S - All msgs SINCE the last one you read"
  2210. WasA1$ = WasA1$+ ZCrLf$ + " T - Search for a TEXT STRING within msgs"
  2211. WasA1$ = WasA1$+ ZCrLf$ + " M - YOUR msgs only"
  2212. WasA1$ = WasA1$+ ZCrLf$ + " L - MOST RECENT msg first, then backwards from there"
  2213. WasA1$ = WasA1$+ ZCrLf$ + " H - Help"                          ' Bh
  2214. WasA1$ = WasA1$+ ZCrLf$ + "         "                          ' Bh
  2215. WasA1$ = WasA1$+ ZCrLf$ + "Your choice  "             ' Bh 091090
  2216.     ZTurboKey = -ZTurboKeyUser
  2217.      IF AddressedToUser OR ToRequested OR FromRequested THEN _
  2218.           CALL QuickTPut(ZFG1$ + "I will look for" + ZFG4$ + _           'Tkey *    ' Bh
  2219.                      " YOUR" + ZFG1$ + " messages....",1) : _   'Tkey *
  2220.           SelectByNumber = ZTrue                                'Tkey *
  2221.        IF SearchString$ <> "" THEN _
  2222.           CALL QuickTPut(ZFG1$ + "I will look for messages with this text: '" + _    'Tkey *    ' Bh
  2223.                      ZFG2$ + SearchString$ + ZEmphasizeOff$ + _        'Tkey *
  2224.                     "'....",1) : _                               'Tkey *
  2225.     SelectByNumber = ZTrue 
  2226.        IF SelectByNumber THEN _                                'Tkey *
  2227.           WasA1$ = "Enter message number(s)"  + _  'Tkey *
  2228.                 STR$(LowMsgNumber)  + _            'Tkey *
  2229.                 " to " + MID$(STR$(ZMsgPtr(ActiveMessages,2)),2) + _  'Tkey *
  2230.            " A)ll " : _ 
  2231.       ZTurboKey = ZFalse
  2232. 4390 ZOutTxt$ = WasA1$ + ZPressEnterExpert$
  2233.      ZMacroMin = 99
  2234.      ZTurboKey = 0
  2235. 4400 GOSUB 12932
  2236.      IF ZWasQ = 0 THEN _
  2237.         GOSUB 4650 : _              'Pe 02/25/90
  2238.         RETURN
  2239.      IF SelectByNumber THEN _                                           'Tkey *
  2240.         IF INSTR("Aa",LEFT$(ZUserIn$(ZAnsIndex),1)) THEN _     'Tkey *
  2241.            ZUserIn$(ZAnsIndex) = "1+"                          'Tkey *
  2242.      IF LEN(ZUserIn$(ZAnsIndex)) = 1 THEN                      'Tkey *
  2243.         IF INSTR("Aa",LEFT$(ZUserIn$(ZAnsIndex),1)) THEN _     'Tkey *
  2244.            ZUserIn$(ZAnsIndex) = "1+"                          'Tkey *
  2245.      IF LEN(ZUserIn$(ZAnsIndex)) = 1 THEN _                 'Pe 12/10/88
  2246.          IF INSTR("Ll",LEFT$(ZUserIn$(ZAnsIndex),1)) THEN _ 'Pe 12/10/88
  2247.            ZUserIn$(ZAnsIndex) = "9999-"                    'Pe 12/10/88
  2248.       IF LEN(ZUserIn$(ZAnsIndex)) = 1 THEN _
  2249.         IF INSTR("Qq",LEFT$(ZUserIn$(ZAnsIndex),1)) THEN _
  2250.          GOSUB 4650 : _
  2251.            RETURN 
  2252.        IF INSTR("Hh",LEFT$(ZUserIn$(ZAnsIndex),1)) THEN _ 
  2253.                 ZFileName$ = ZHelpPath$ + "MR" + HelpExtension$ : _
  2254.                 GOSUB 1790 : _
  2255.         ZTurboKey = -ZTurboKeyUser : _
  2256.                 GOTO 4390
  2257.         IF INSTR("Nn",LEFT$(ZUserIn$(ZAnsIndex),1)) THEN _  'Tkey *
  2258.            SelectByNumber = ZTrue : _                                'Tkey *
  2259.            GOTO 4380                                                 'Tkey *
  2260.         IF INSTR("Tt",LEFT$(ZUserIn$(ZAnsIndex),1)) THEN _  'Tkey *
  2261.            WasA1$ =  "Enter text to search for " : _                 'Tkey *
  2262.            GOTO 4390                                                 'Tkey *
  2263.      END IF                                                          'Tkey *
  2264.      MsgIndex = 0
  2265.      NumMsgsSelected = ZwasQ
  2266.      GOTO 4370
  2267. 4415 Forward = ZFalse
  2268.      Reverse = ZFalse
  2269.      IF LEN(ZUserIn$(ZAnsIndex)) = 1 THEN _
  2270.         IF INSTR("Ss*",ZUserIn$(ZAnsIndex)) > 0 THEN _
  2271.            CurMsg = ZLastMsgRead + 1 : _
  2272.            Forward = ZTrue : _
  2273.            GOTO 4430 _
  2274.         ELSE IF INSTR("Ll",ZUserIn$(ZAnsIndex)) > 0 THEN _
  2275.                 CurMsg = HighMsgNumber : _
  2276.                 Reverse = ZTrue : _
  2277.                 GOTO 4490
  2278. 4416 IF INSTR("Mm",ZUserIn$(ZAnsIndex)) THEN _
  2279.         AddressedToUser = ZTrue : _
  2280.         GOTO 4370
  2281.      ZWasA = INSTR("FfTt",ZUserIn$(ZAnsIndex))
  2282.      IF ZWasA > 0 THEN _
  2283.         ToRequested = (ZWasA > 2) : _
  2284.         FromRequested = (ZWasA < 3) : _
  2285.         GOTO 4370
  2286.      IF CurMsg = 0 THEN _
  2287.         IF SearchHeader$ <> "" THEN _
  2288.            GOTO 4370 _
  2289.         ELSE SearchString$ = ZUserIn$(ZAnsIndex) : _
  2290.              CALL AllCaps (SearchString$) : _
  2291.              CALL Remove (SearchString$,CHR$(34) + CHR$(39)) : _
  2292.              SearchHeader$ = SearchString$ : _
  2293.              SubInHeader$ = SearchHeader$ : _
  2294.              GOTO 4370
  2295.      CALL SkipLine (1)
  2296. 4430 IF RIGHT$(ZUserIn$(ZAnsIndex),1) = "+" THEN _
  2297.         Forward = ZTrue
  2298.      IF RIGHT$(ZUserIn$(ZAnsIndex),1) = "-" THEN _
  2299.         Reverse = ZTrue : _
  2300.         GOTO 4490
  2301. 4450 ZMsgDimIndex = 1
  2302. 4452 IF ZMsgDimIndex > ActiveMessages THEN _
  2303.         GOTO 4515
  2304.      IF ReadMsgs AND _
  2305.         ZMsgPtr(ZMsgDimIndex,2) = CurMsg THEN _
  2306.         GOTO 4520
  2307. 4470 IF ((ReadMsgs AND Forward) OR _
  2308.         QuickScanMsgs OR ScanMsgs) AND _
  2309.         ZMsgPtr(ZMsgDimIndex,2) >= CurMsg THEN _
  2310.         GOTO 4520
  2311. 4480 ZMsgDimIndex = ZMsgDimIndex + 1
  2312.      GOTO 4452
  2313. 4490 ZMsgDimIndex = ActiveMessages
  2314. 4492 IF ZMsgDimIndex < 1 THEN _
  2315.         GOTO 4515
  2316.      IF ZMsgPtr(ZMsgDimIndex,2) <= CurMsg THEN _
  2317.         GOTO 4540
  2318. 4510 ZMsgDimIndex = ZMsgDimIndex - 1
  2319.      GOTO 4492
  2320. 4515 IF Forward THEN _
  2321.         ZOutTxt$ = "No new messages" : _
  2322.         ZLastMsgRead = HighMsgNUmber : _
  2323.         ZMailWaiting = ZFalse _
  2324.      ELSE ZOutTxt$ = "No such message #" + _
  2325.                STR$(CurMsg)
  2326.      GOSUB 12979
  2327.      GOTO 4370
  2328. 4520 EndingMsgIndex = ZMsgDimIndex
  2329.      IF ReadMsgs AND NOT Forward THEN _
  2330.         GOTO 4560
  2331. 4530 StartMsgIndex = ZMsgDimIndex
  2332.      EndingMsgIndex = ActiveMessages
  2333.      WasSO = 1
  2334.      GOTO 4550
  2335. 4540 StartMsgIndex = ZMsgDimIndex
  2336.      EndingMsgIndex = 1
  2337.      WasSO = -1
  2338. 4550 WasXXX = EndingMsgIndex + WasSO
  2339.      ZMsgDimIndex = StartMsgIndex
  2340. 4552 IF ZMsgDimIndex = WasXXX THEN _
  2341.         CALL Carrier : _
  2342.         GOTO 4637
  2343. 4560   CurHeader = ZMsgPtr(ZMsgDimIndex,1)
  2344.        IF CurHeader < 1 THEN _
  2345.           GOTO 4515
  2346.        GET 1,CurHeader
  2347.        ZPswdFailed = ZFalse
  2348.        UserInHeader = ZFalse
  2349.        ZWasZ$ = MID$(ZMsgRec$,101,15)
  2350.        MsgPswd$ = ZWasZ$
  2351.        CALL Trim(MsgPswd$)
  2352. 4561   GOSUB 4660
  2353.        GOSUB 4655
  2354. 4562   IF NOT CanKill THEN _
  2355.           IF INSTR(ZMsgRec$,"^READ^") > 0 AND NOT UserInHeader THEN _
  2356.              ZPswdFailed = ZTrue : _
  2357.              IF Forward OR Reverse THEN _
  2358.                 GOTO 4635
  2359. 4563   CurMsg = VAL(MID$(ZMsgRec$,2,4))
  2360.        IF ToRequested THEN _
  2361.           IF NOT MsgToCaller THEN _
  2362.              GOTO 4629
  2363.        IF FromRequested THEN _
  2364.           IF NOT MsgFromCaller THEN _
  2365.              GOTO 4629
  2366.        IF AddressedToUser AND NOT UserInHeader THEN _
  2367.           GOTO 4629
  2368.        WasX$ = MID$(ZMsgRec$,121,2)
  2369.        IF WasX$ = "  " THEN _
  2370.           MsgSec = ZMinLogonSec _
  2371.        ELSE MsgSec = CVI(WasX$)
  2372.        IF ZUserSecLevel < MsgSec THEN _
  2373.           GOTO 4629
  2374. 4580   IF INSTR(ZMsgRec$,ZWasLG$(11)) = 0 THEN _
  2375.           GOTO 4635
  2376. 4581   IF MID$(ZMsgRec$,116,1) = ZDeletedMsg$ THEN _
  2377.           GOTO 4630
  2378.        ZJustSearching = ZFalse                              'Pe 02/05/90
  2379.        IF SearchHeader$ <> "" THEN _
  2380.           ZFF = INSTR(ZMsgRec$,SearchHeader$) : _
  2381.           IF ZFF >= MsgStart AND ZFF <= MsgEnd THEN _
  2382.              HiLitePos = ZFF : _
  2383.              GOTO 4582 _
  2384.           ELSE IF ReadMsgs AND SearchString$ <> "" THEN _
  2385.                   ZJustSearching = ZTrue : _                 'Pe 02/05/90
  2386.                   GOTO 4582 _
  2387.                ELSE GOTO 4629
  2388. 4582   WasPG = ZFalse
  2389.        IF MID$(ZWasZ$,1,1) = "!" THEN _
  2390.           IF NOT CanKill THEN _
  2391.              WasPG = ZTrue : _
  2392.              ZPswdSave$ = MID$(ZWasZ$,2) + _
  2393.                               " " : _
  2394.              ZAttemptsAllowed = 0 : _
  2395.              ZSubParm = 1 : _
  2396.              CALL PassWrd
  2397. 4584   IF ZPswdFailed AND _
  2398.           (QuickScanMsgs OR (ScanMsgs AND NOT WasPG)) THEN _
  2399.           GOTO 4635
  2400. 4585   IF ZPswdFailed THEN _
  2401.           IF WasPG THEN _
  2402.              WasSJ$ = "<PASSWORD>" _
  2403.           ELSE WasSJ$ = "<PROTECTED>" _
  2404.        ELSE WasSJ$ = MID$(ZMsgRec$,76,25)
  2405. 4590   IF QuickScanMsgs THEN _
  2406.           ZOutTxt$ = LEFT$(ZMsgRec$,5) + _
  2407.                " " + _
  2408.                LEFT$(WasSJ$,19) + _
  2409.                " " : _
  2410.           CALL CheckColor (ZOutTxt$,SubInHeader$,ZEmphasizeOff$) : _
  2411.           GOSUB 12978 : _
  2412.           SecIndex = SecIndex + 1 : _
  2413.           IF SecIndex = 3 THEN _
  2414.              SecIndex = 0 : _
  2415.              CALL SkipLine (1) : _
  2416.              GOTO 4630  _
  2417.           ELSE GOTO 4630
  2418. 4600   IF ScanMsgs THEN _
  2419.           GOSUB 8020 : _
  2420.           GOTO 4630
  2421.        IF NOT ZJustSearching THEN _
  2422.           GOSUB 8000 : _
  2423.           IF QuotedReply THEN _
  2424.              QuotedReply = ZFalse : _
  2425.              GOTO 4610
  2426.        IF ZRet THEN _
  2427.           GOTO 4630
  2428.        CanChangeSec = (ZUserSecLevel => ZSecChangeMsg)
  2429.        IF ZExpertUser THEN _
  2430.           WasA1$ = ",R,T,=,+,-" + _
  2431.                 MID$(",F",1,- (UserInHeader OR CanChangeSec) * 2) + _
  2432.                 MID$(",K",1,- (UserInHeader OR CanKill) * 2) + _
  2433.                 MID$(",U",1,- (ZUserSecLevel >= ZOptSec(54)) * 2) + _
  2434.                 MID$(",S",1, - CanChangeSec * 2) _
  2435.        ELSE WasA1$ = ",R)eply,T)hread,=)again,+,-" + _
  2436.                   MID$(",F)wd",1, - (UserInHeader OR CanChangeSec) * 5) + _
  2437.                   MID$(",K)ill",1, - (UserInHeader OR CanKill) * 6) + _
  2438.                   MID$(",U)ser",1,- (ZUserSecLevel >= ZOptSec(54)) * 6) + _
  2439.                   MID$(",S)ec",1, - CanChangeSec * 5)
  2440.        ZTurboKey = -ZTurboKeyUser
  2441.        IF ZJustSearching OR NOT JustReplied THEN _  'Pe 02/05/90
  2442.           GOTO 4610
  2443.        JustReplied = ZFalse
  2444.        CALL AskMore (WasA1$,ZTrue,ZFalse,ZAnsIndex,ZFalse)
  2445.        CALL SkipLine (1)
  2446.        IF ZNo THEN _
  2447.           RETURN
  2448.        CALL AllCaps (ZUserIn$)
  2449.        ZReply = (ZReply OR ZUserIn$ = "R")
  2450.        IF ZUserIn$ <> "=" THEN _
  2451.           GOTO 4618
  2452.        CALL SkipLine (1)
  2453. 4610   IF NOT ZPswdFailed THEN _
  2454.           GOTO 4613
  2455.        IF WasPG AND (NOT ZNonStop) THEN _
  2456.           ZAttemptsAllowed = 2 : _
  2457.           ZSubParm = 2 : _
  2458.           CALL PassWrd
  2459. 4611   IF ZPswdFailed THEN _
  2460.           GOTO 4629
  2461. 4613 IF NOT ZJustSearching THEN _               'Pe 02/05/90
  2462.        CALL THREAD3(CurMsg,ZConfName$)         'Pe 02/03/90
  2463.        GOSUB 9000
  2464.        JustReplied = ZFalse
  2465.        DontPrint = ZFalse
  2466.        IF ZJustSearching THEN _    'Pe 02/05/90
  2467.           GOTO 4629
  2468.        IF ZAnsIndex > NumMsgsSelected THEN _
  2469.           GOTO 4650
  2470.        CALL SkipLine (1)
  2471. 4614   GOSUB 41000
  2472.        ZKillMessage = ZFalse
  2473.        ZReply = ZFalse
  2474.        IF ZNonStop THEN _
  2475.           GOTO 4629
  2476. 4616   ZTurboKey = -ZTurboKeyUser
  2477.        CALL AskMore (WasA1$,ZTrue,ZFalse,WasXX,ZFalse)
  2478.        IF ZNo THEN _
  2479.           ZAnsIndex = ZLastIndex + 1 : _
  2480.           RETURN
  2481.        CALL AllCaps(ZUserIn$(1))
  2482.        ZReply = (ZReply OR ZUserIn$(1) ="R")
  2483.        IF ZUserIn$(1) = "=" THEN _
  2484.           CALL SkipLine (1) : _
  2485.           GOTO 4560
  2486. '
  2487. ' *** MESSAGE Forward - THE "F" COMMAND
  2488. '
  2489.         IF ZUserIn$(1) <> "F" OR _
  2490.           NOT (UserInHeader OR CanChangeSec) THEN _
  2491.           GOTO 4617
  2492.        MsgFwd = ZTrue
  2493.        GOTO 4623
  2494.  
  2495. '
  2496. ' ***  LOOK FOR "U" CHARACTER AND SET UP FOR USER EDIT
  2497. '
  2498. 4617   IF ZUserIn$(1) <> "U" OR (ZUserSecLevel < ZOptSec(54)) THEN _
  2499.           GOTO 4618
  2500.        EditFromRead = 1
  2501.        ZReply=ZTrue
  2502.        CALL PutMsgAttr
  2503.        TempHashValue$ = MsgFrom$
  2504.        CALL Trim (TempHashValue$)
  2505.        IF TempHashValue$ = "SYSOP" THEN _
  2506.           TempHashValue$ = ZSysopPswd1$ + " " + ZSysopPswd2$
  2507.        GOTO 11000
  2508. '
  2509. ' ****  CHECK FOR CHANGE SECURITY  ***
  2510. '
  2511. 4618  IF ZUserIn$(1) = "S" AND CanChangeSec THEN _
  2512.          CALL PutMsgAttr : _
  2513.          GOSUB 4665 : _
  2514.          ZReply = ZFalse : _
  2515.          QuotedReply = ZTrue : _
  2516.          CALL GetMsgAttr : _
  2517.          DontPrint = ZTrue : _
  2518.          ZUserIn$ = "=" : _
  2519.          JustReplied = ZTrue : _
  2520.          GOTO 4560
  2521.       IF ZUserIn$(1) = "T" THEN _
  2522.          CALL SetThread (CurMsg, OrigSubject$) : _
  2523.          IF ZWasQ > 0 THEN _
  2524.             SearchHeader$ = ZUserIn$(2) : _
  2525.             SubInHeader$ = SearchHeader$ : _
  2526.             CALL Trim (SubInHeader$) : _
  2527.             GOTO 4352
  2528.       ZWasA = INSTR(" +-",ZUserIn$(1))
  2529.       IF ZWasA > 1 THEN _
  2530.          CurMsg = CurMsg + 5 - 2 * ZWasA : _
  2531.          Forward = (ZWasA = 2) : _
  2532.          Reverse = (NOT Forward) : _
  2533.          SearchString$ = "" : _
  2534.          IF Reverse THEN _
  2535.             GOTO 4490 _
  2536.          ELSE GOTO 4450
  2537.       IF ZUserIn$(1) = "Z" AND ZSysop THEN _                      'DGS-MNR
  2538.          ZMsgDimIndex = DGSMsgDimIndex : _                        'DGS-MNR
  2539.          MID$(DGSRecord$,123,6) = SPACE$(6) : _                   'DGS-MNR
  2540.          LSET ZMsgRec$ = DGSRecord$ : _                           'DGS-MNR
  2541.          GOSUB 12986 : _                                          'DGS-MNR
  2542.          PUT 1,ZMsgPtr(ZMsgDimIndex,1) : _                        'DGS-MNR
  2543.          GOSUB 12987                                              'DGS-MNR
  2544. '
  2545. ' ****  KILL CURRENT MESSAGE  ***
  2546. '
  2547.       IF ZKillMessage AND (UserInHeader OR CanKill) THEN _
  2548.          IF ZUserSecLevel >= ZOptSec(9) THEN _
  2549.             CALL PutMsgAttr : _
  2550.             MsgToKill = CurMsg : _
  2551.             Temp = ZWasQ : _
  2552.             GOSUB 3950 : _
  2553.             CALL GetMsgAttr : _
  2554.             GOTO 4629 _
  2555.          ELSE ZViolation$ = "MORE KILL" : _
  2556.               GOSUB 1380 : _
  2557.               GOTO 4629
  2558. '
  2559. ' ****  REPLY TO CURRENT MESSAGE  ***
  2560. '
  2561. 4620   IF NOT ZReply THEN _
  2562.           GOTO 4629
  2563. 4621   IF ZUserSecLevel < ZOptSec(5) THEN _
  2564.           ZViolation$ = "MORE RE" : _
  2565.           GOSUB 1380 : _
  2566.           ZReply = ZFalse : _
  2567.           GOTO 4629
  2568.        IF LEFT$(Subject$,3) <> "(R)" THEN _
  2569.           OrigSubject$ = "(R)" + _
  2570.                      LEFT$(OrigSubject$,22)
  2571. 4622   MsgTo$ = MsgFrom$
  2572.        CALL Trim (MsgTo$)
  2573.        MsgFrom$ = ZActiveUserName$
  2574. 4623   DontPrint = ZFalse
  2575.        CALL PutMsgAttr
  2576.        IF MsgFwd THEN GOTO 4624
  2577.        ZOutTxt$ = "Quote " + MsgTo$ + "'s message (Y/[N])"
  2578.        GOSUB 12999
  2579.        IF ZRet OR NOT ZYes THEN _
  2580.           GOTO 4627
  2581. 4624   QuotedReply = ZTrue
  2582.        ZLinesInMsg = ZLinesInMsg - 1
  2583.        IF HiLitedLine > 0 THEN _
  2584.           ZOutTxt$(HiLitedLine) = ZOutTxt$(0) : _
  2585.           HiLitedLine = 0
  2586.        IF MsgFwd THEN _
  2587.           TempRightMargin = ZRightMargin _
  2588.        ELSE _
  2589.           TempRightMargin = ZRightMargin - 2
  2590.        CALL WordWrap (TempRightMargin,ZLinesInMsg,ZOutTxt$())
  2591.        IF ZLinesInMsg > ZMsgDim THEN _
  2592.           ZLinesInMsg = ZMsgDim : _
  2593.           CALL QuickTPut1 ("Original message truncated to " + _
  2594.                       STR$(ZMsgDim) + " lines for editing!")
  2595.        IF MsgFwd THEN GOTO 4625
  2596.        FOR WasX = 1 TO ZLinesInMsg
  2597.           IF LEFT$(ZOutTxt$(WasX),1) = ">" THEN _
  2598.              ZOutTxt$(WasX) = ">" + ZOutTxt$(WasX) _
  2599.           ELSE ZOutTxt$(WasX) = "> " + ZOutTxt$(WasX)
  2600.        NEXT
  2601. 4625   WasX$ = MsgTo$
  2602.        GOSUB 2001
  2603. '       IF (ActiveMessages >= MaxMsgs) OR MsgTo$ = "" THEN _
  2604. '          GOTO 4628
  2605.        IF (ActiveMessages >= MaxMsgs) OR WasX$ = "" THEN _     'Pe 02/25/90
  2606.           GOTO 4628
  2607.        IF MsgFwd THEN _
  2608.           MsgFwd$ = ZActiveUserName$ : _
  2609.           CALL Trim (MsgFwd$) : _
  2610.           CALL Trim (WasX$) : _
  2611.           MsgFwd$ = "Original Msg was to " + WasX$ + _
  2612.              ", forwarded by " + MsgFwd$
  2613.        IF (MsgFwd AND CanChangeSec AND NOT MsgFromCaller) THEN _
  2614.           CALL Trim (MsgFrom$) : _
  2615.           ZOutTxt$ = "Message was from " + _
  2616.              MsgFrom$ + _
  2617.              ", change to " + _
  2618.              ZActiveUserName$ + _
  2619.              " (Y/[N])" : _
  2620.           GOSUB 12999 : _
  2621.           IF ZYes THEN _
  2622.              MsgFrom$ = ZActiveUserName$ : _
  2623.              CALL Trim (MsgFrom$) : _
  2624.              GOTO 4626
  2625.        IF MsgFwd THEN _
  2626.           FOR MsgFwdCount = ZLinesInMsg TO 1 STEP -1 : _
  2627.              ZOutTxt$(MsgFwdCount + 2) = ZOutTxt$(MsgFwdCount) : _
  2628.           NEXT MsgFwdCount : _
  2629.           ZOutTxt$(1) = MsgFwd$ : _
  2630.           ZOutTxt$(2) = "" : _
  2631.           ZLinesInMsg = ZLinesInMsg + 2 : _
  2632.           IF NOT CanChangeSec THEN _
  2633.              MsgLockLines = 1
  2634. 4626   ZWasZ$ = "L"
  2635.        WasL = 1
  2636. '       GOSUB 2101          'ANSIEd      ' Bh 110790
  2637. '       IF ZYes THEN        'ANSIEd
  2638. '          GOSUB 2110       'ENSIEd
  2639. '       ELSE
  2640.        IF ZLinesInMsg >= ZMaxMsgLines THEN _
  2641.           CALL QuickTPut ("Msg cannot exceed" + _
  2642.                       STR$(ZMaxMsgLines) + " lines! ",0)
  2643.        IF NOT MsgFwd THEN _
  2644.  CALL QuickTPut1 (ZCrlf$ +"C continues reply.  Please 1st delete unneeded lines (eg. d 1 5)")
  2645.        GOSUB 3200
  2646.        GOSUB 3020
  2647.        GOSUB 2300
  2648. '    END IF                'ANSIEd      ' Bh 110790
  2649.        GOTO 4628
  2650. 4627   GOSUB 2000
  2651. 4628   ZReply = ZFalse
  2652.        JustReplied = ZTrue
  2653.        QuotedReply = ZTrue
  2654.        CALL GetMsgAttr
  2655.        DontPrint = ZTrue
  2656.        ZUserIn$ = "="
  2657.        QuotedReply = ZTrue
  2658.        MsgFwd = ZFalse
  2659.        GOTO 4560
  2660. 4629   QuotedReply = ZFalse
  2661.        JustReplied = ZFalse
  2662.        IF NOT Forward AND NOT Reverse THEN _
  2663.           GOTO 4370
  2664. 4630   CALL AskMore (",#(s) to read",ZTrue,ZTrue,WasXX,ZFalse)
  2665.        IF ZWasQ = 0 OR ZYes THEN _
  2666.           GOTO 4631
  2667.        IF ZNo THEN _
  2668.           RETURN
  2669.        IF ZSubParm = -1 THEN _
  2670.           RETURN 10595
  2671.        IF ZRet THEN _
  2672.           RETURN
  2673.        ZWasZ$ = ZUserIn$(1)
  2674.        CALL AllCaps (ZWasZ$)
  2675.        IF VAL(ZWasZ$) > 0 THEN _
  2676.           FOR WasI = ZWasQ TO 1 STEP -1 : _
  2677.              ZUserIn$(WasI + 1) = ZUserIn$(WasI) : _
  2678.           NEXT : _
  2679.           ZUserIn$(1) = MID$(ZAllOpts$,INSTR(ZOrigCommands$,"R"),1)
  2680.           ZLastIndex = ZWasQ + 1 : _
  2681.           ZAnsIndex = 1 : _
  2682.           RETURN 1235
  2683. 4631   CALL CheckCarrier
  2684.        IF ZSubParm THEN _
  2685.           RETURN 10595
  2686.        IF ZRet THEN _
  2687.           RETURN
  2688. 4635 IF WasSO = 0 THEN _
  2689.         WasSO = 1
  2690.      ZMsgDimIndex = ZMsgDimIndex + WasSO
  2691.      GOTO 4552
  2692. 4637 IF ReadMsgs THEN _
  2693.         SearchString$ = "" : _
  2694.         SearchHeader$ = "" : _
  2695.         SubInHeader$ = "" : _
  2696.         ToRequested = ZFalse : _
  2697.         FromRequested = ZFalse : _
  2698.         AddressedToUser = ZFalse : _
  2699.         GOTO 4370
  2700. 4650 CALL SkipLine (1)
  2701.      CALL QuickTPut1 ("<------------- End of Selected Messages-------->")
  2702.      CALL DelayTime (1)          'Pe 02/03/90
  2703.      RETURN
  2704. 4655 '****     update last message read     ****
  2705.      IF SearchHeader$ <> "" OR SearchString$ <> "" OR NOT ReadMsgs THEN _
  2706.         RETURN
  2707. 4656 IF ZMsgPtr(ZMsgDimIndex,2) > ZLastMsgRead THEN _
  2708.         ZMailWaiting = ZFalse : _
  2709.         ZLastMsgRead = ZMsgPtr(ZMsgDimIndex,2)
  2710.      RETURN
  2711. 4660 IF RemoteSysop THEN _
  2712.         CALL MsgNameMatch ("SYSOP",SysopFullName$,6,MsgFromCaller) : _
  2713.         CALL MsgNameMatch ("SYSOP",SysopFullName$,37,MsgToCaller) _
  2714.      ELSE CALL MsgNameMatch (MsgUserName$,"",6,MsgFromCaller) : _ 'DGS-AlsMod
  2715.           CALL MsgNameMatch (MsgUserName$,"",37,MsgToCaller)      'DGS-AlsMod
  2716. '     ELSE CALL MsgNameMatch (MsgUserName$,ZActiveUserName$,6,MsgFromCaller) : _ 'DGSALSMod
  2717. '          CALL MsgNameMatch (MsgUserName$,ZActiveUserName$,37,MsgToCaller)      'DGSALSMod
  2718.      IF ZNewUserDGS THEN _                                        'DGS-NEW
  2719.         CALL MsgNameMatch ("NEWUSER","",6,MsgFromCaller) : _      'DGS-NEW
  2720.         CALL MsgNameMatch ("NEWUSER","",37,MsgToCaller) : _       'DGS-NEW
  2721.         CanKill = ZFalse                                          'DGS-NEW
  2722.      UserInHeader = (MsgFromCaller OR MsgToCaller)
  2723.      RETURN
  2724. '
  2725. ' ****  S - CHANGE MESSAGE SECURITY   ***
  2726. '
  2727. 4665 CALL Trim (MsgFrom$)
  2728.      ZOutTxt$ = "Change sender's name from " + _
  2729.         MsgFrom$ + _
  2730.         " to"
  2731.      GOSUB 12995
  2732.      IF ZWasQ = 0 THEN _
  2733.         GOTO 4666
  2734.      IF LEN(ZUserIn$) > 30 THEN _
  2735.         CALL QuickTPut1 ("30 Char. Max") : _
  2736.         GOTO 4665
  2737.      CALL AllCaps (ZUserIn$)
  2738.      MsgFrom$ = ZUserIn$
  2739. 4666 CALL Trim (MsgTo$)
  2740.      ZOutTxt$ = "Change receiver's name from " + _
  2741.         MsgTo$ + _
  2742.         " to"
  2743.      GOSUB 12995
  2744.      IF ZWasQ = 0 THEN _
  2745.         GOTO 4667
  2746.      IF LEN(ZUserIn$) > 30 THEN _
  2747.         CALL QuickTPut1 ("30 Char. Max") : _
  2748.         GOTO 4666
  2749.      CALL AllCaps (ZUserIn$)
  2750.      MsgTo$ = ZUserIn$
  2751.      TempMsgTo$ = ZUserIn$
  2752.      CALL MessageTo (HighestUserRecord,MsgTo$,MsgFrom$,RcvrRecNum,Found)
  2753.      IF MsgTo$ = "" THEN MsgTo$ = TempMsgTo$
  2754. 4667 CALL Trim (Subject$)
  2755.      ZOutTxt$ = "Change subject from " + _
  2756.         Subject$ + _
  2757.         " to"
  2758.      GOSUB 12995
  2759.      IF ZWasQ = 0 THEN _
  2760.         GOTO 4668
  2761.      IF LEN(ZUserIn$) > 25 THEN _
  2762.         CALL QuickTPut1 ("25 Char. Max") : _
  2763.         GOTO 4667
  2764.      CALL AllCaps (ZUserIn$)
  2765.      Subject$ = ZUserIn$
  2766. 4668 ZOutTxt$ = "Change min sec to read from" + _
  2767.         STR$(MsgSec) + _
  2768.         " to"
  2769.      GOSUB 12995
  2770.      IF ZWasQ=0 THEN _
  2771.         GOTO 4669
  2772.      CALL CheckInt (ZUserIn$)
  2773.      IF ZErrCode <> 0 THEN _
  2774.         RETURN
  2775.      MsgSec = ZTestedIntValue
  2776. 4669 ZReply = ZTrue
  2777.      CALL MsgProt (MsgTo$,Found,MsgPswd$)
  2778.      ZReply = ZFalse
  2779. 4670 MsgTo$ = LEFT$(MsgTo$ + SPACE$(22),22)
  2780.      MsgFrom$ = LEFT$(MsgFrom$ + SPACE$(31),31)
  2781.      Subject$ = LEFT$(Subject$ + SPACE$(25),25)
  2782.      MsgPswd$ = LEFT$(MsgPswd$ + SPACE$(15),15)
  2783.      ZSubParm = 3
  2784.      CALL FileLock
  2785.      GET 1,CurHeader
  2786.      MID$(ZMsgRec$,37,22) = MsgTo$
  2787.      MID$(ZMsgRec$,6,31) = MsgFrom$
  2788.      MID$(ZMsgRec$,76,25) = Subject$
  2789.      MID$(ZMsgRec$,121,2) = MKI$(MsgSec)
  2790.      MID$(ZMsgRec$,101,15) = MsgPswd$
  2791.      IF LEFT$(MsgPswd$,6) = "^READ^" THEN _
  2792.         MID$(ZMsgRec$,1,1) = "*" _
  2793.      ELSE _
  2794.         MID$(ZMsgRec$,1,1) = " "
  2795.      PUT 1,CurHeader
  2796.      ZSubParm = 4
  2797.      CALL FileLock
  2798.      CALL QuickTPut1 ("Message header changed")
  2799.      CALL SkipLine (1)
  2800.      CALL FlushKeys
  2801.      RETURN
  2802. '
  2803. ' ****  O - COMMAND FROM MAIN MENU (OPERATOR PAGE)   ***
  2804. '
  2805. 4700 IF NOT ZSysopAvail THEN _
  2806.         ZOutTxt$ = "Sorry, " + _
  2807.              ZSysopFirstName$ + _
  2808.              " not available to answer page" : _
  2809.         GOSUB 12979 : _
  2810.         GOTO 4755
  2811. 4705 CALL QuickTPut1 ("Chat. Remote Conversation")
  2812.      WasJJ = VAL(MID$(TIME$,1,2))*100 + VAL(MID$(TIME$,4,2))
  2813.      IF (WasJJ > ZStartOfficeHours AND WasJJ < ZEndOfficeHours) OR ZSysopAnnoy THEN _
  2814.         GOTO 4710
  2815. 4707 GOTO 4750  'Pe 02/03/90
  2816. 4708 ZOutTxt$ = "SYSOP in from" + _
  2817.           STR$(ZStartOfficeHours) + _
  2818.           " to" + _
  2819.           STR$(ZEndOfficeHours) + ","
  2820.      GOSUB 12979
  2821.      GOTO 4755
  2822. 4710 ZOutTxt$ = "Page " + _
  2823.           ZSysopFirstName$ + _
  2824.           " (Y/[N])"
  2825.      CALL SkipLine (1)
  2826.      GOSUB 12999
  2827.      IF NOT ZYes THEN _
  2828.         RETURN
  2829.      PageCount = 0
  2830.      ZOutTxt$ = "Paging " + _
  2831.           ZSysopFirstName$ + _
  2832.           " now"
  2833.      GOSUB 12978
  2834.      PageTimeStart! = TIMER
  2835. 4730 CALL DelayTime (1)
  2836. 4735 PageCount = PageCount + 1
  2837.      IF INKEY$ = ZEscape$ THEN _
  2838.         GOTO 4765
  2839. 4740 IF PageCount MOD 2 THEN _
  2840.         ZOutTxt$ = ZPagingPtrSupport$ + _
  2841.              ZBellRinger$ : _
  2842.         IF LEN(ZPagingPtrSupport$) = 3 THEN _
  2843.            CALL Printit (CHR$(7)) : _
  2844.            IF ZErrCode <> 0 THEN _
  2845.               ZWasEL = 4740 : _
  2846.               GOTO 13000
  2847. 4745 GOSUB 12978
  2848.      CALL CheckTime (PageTimeStart!, PageTimeNow!, 2)
  2849.      IF PageTimeNow! < 30 THEN GOTO 4730
  2850. 4747 GOSUB 12979
  2851. 4750 CALL QuickTPut1 (ZSysopFirstName$ + " not responding")
  2852. 4755 'CALL QuickTPut1 ("Try a msg or comment")
  2853.       PagedFileName$ = "PAGED.DEF"              'Pe 02/03/90
  2854.       Call BufFile (PagedFileName$,WasX)        'Pe 02/03/90
  2855.      ZPageStatus$ = "Paged!"
  2856.      CALL UpdtCalr ("Operator paged " + LEFT$(TIME$,5),2)
  2857.      RETURN
  2858. 4765 CALL UpdtCalr ("Paged & chatted with Sysop",1)
  2859.      CALL QuickTPut1 ("SYSOP in!  " + _
  2860.           ZFirstName$ + _
  2861.           ", this is " + _
  2862.           ZSysopFirstName$ + _
  2863.           " go ahead!")
  2864.      ZPageStatus$ = ""
  2865. 4770 CALL SysopChat
  2866.      IF ZSubParm < 0 THEN _
  2867.         GOTO 202
  2868.      RETURN
  2869. '
  2870. ' ****  S - COMMAND FROM UTILITY MENU (STATISTICS)  ***
  2871. '
  2872. 4849 GOSUB 4850         'PE 02/10/89
  2873.     CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)   'PE 02/10/89
  2874.      RETURN             'PE 02/10/89
  2875. 4850 GOSUB 1893
  2876.      CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " Node " + ZNodeID$)
  2877.      ZOutTxt$ = ""
  2878.      IF NOT ZConfMode THEN _
  2879.           ZOutTxt$ = "Caller Number................"+STR$(CallsToDate!) + "  "+ZCrLf$
  2880. 4855 ZOutTxt$ = ZOutTxt$ + "Active Messages.............."+STR$(ActiveMessages)+ZCrLf$
  2881.      ZOutTxt$ = ZOutTxt$ + "Next Msg Number.............."+STR$(HighMsgNumber + 1)+_
  2882.         ZCrLf$
  2883.      IF ZLastMsgRead > 0 THEN _
  2884.      ZOutTxt$ = ZOutTxt$ + "Last msg you read............" + STR$(ZLastMsgRead)+ZCrLf$ _
  2885. ELSE ZOutTxt$ = ZOutTxt$ + "Believe on the Lord Jesus Christ, and thou shalt be saved" +ZCrLf$     ' Bh
  2886. 4857 GOSUB 12976
  2887.     ZWasZ$ = ZUpldDriveFile$
  2888.      CALL FindFree
  2889.      CALL QuickTPut1 ("Upload disk has" + ZFreeSpace$)
  2890.      IF (NOT ZSysop) AND (ZUserSecLevel < ZSecKillAny) THEN _
  2891.       CALL Delaytime (2) : _
  2892.         RETURN
  2893.      UserWork = (HighestUserRecord * .95) + 1
  2894.      IF ZMsgsCanGrow THEN _
  2895.         ZWasY$ = " open" _
  2896.      ELSE ZWasY$ = STR$(HighestMsgRecord + 1 - NodesInSystem - ZNextMsgRec)
  2897.      ZOutTxt$ = "USERS: used" + _
  2898.           STR$(CurUserCount - 1) + _
  2899.           " avl" + _
  2900.           STR$(UserWork - CurUserCount) + _
  2901.           "  MSGS: used" + _
  2902.           STR$(ActiveMessages) + _
  2903.           " avl" + _
  2904.           STR$(MaxMsgs - ActiveMessages) + _
  2905.           "  MSG REC: used" + _
  2906.           STR$(ZNextMsgRec - 1) + _
  2907.           " avl" + ZWasY$
  2908.      GOSUB 12976
  2909. CALL DelayTime (2)
  2910.      RETURN
  2911. 4900 IF (NOT ZLocalUser) OR (NOT ZSysop) THEN _
  2912.         CALL UpdtCalr ("Entered " + ZConfName$,1)
  2913.      CALL QuickTPut1 ("Welcome to the " + ZConfName$)      ' Bh 083190
  2914. 4905 GOSUB 1790
  2915. 4910 GOSUB 12986
  2916.      GOSUB 5344
  2917.      IF LOF(1) = 0 THEN _
  2918.         ZWasDF$ = ZActiveMessageFile$ : _
  2919.         CLOSE 1 : _
  2920.         KILL ZActiveMessageFile$ : _
  2921.         GOSUB 12987 : _
  2922.         RETURN 13600
  2923.      GOSUB 23000
  2924.      RETURN
  2925. '
  2926. ' ****  P - COMMAND FROM UTILITY MENU (PASSWORD CHANGE)  ***
  2927. '
  2928. 5110 CALL NewPassword ("Enter new password" + ZPressEnter$,ZTrue)
  2929.      IF ZSubParm < 0 THEN _
  2930.         GOTO 202
  2931.      IF ZWasQ = 0 THEN _
  2932.         RETURN
  2933. 5120 ZOutTxt$ = "Reenter new password"
  2934.      GOSUB 45010
  2935.      IF ZWasQ = 0 THEN _
  2936.         RETURN
  2937.      CALL AllCaps (ZUserIn$)
  2938.      IF ZWasZ$ <> ZUserIn$ THEN _
  2939.         ZOutTxt$ = "Passwords don't match!" : _
  2940.         GOSUB 12979 : _
  2941.         RETURN
  2942. 5125 IF ZMaxPswdChanges AND _
  2943.         ChangeThisSession > _
  2944.         ZMaxPswdChanges AND _
  2945.         NOT ZSysop THEN _
  2946.             ZOutTxt$ = "No changes permitted" : _
  2947.             GOSUB 12975 : _
  2948.             RETURN _
  2949.      ELSE PswdChangeAllowed = ZTrue : _
  2950.           GOSUB 5140 : _
  2951.           IF NOT Found THEN _
  2952.              GOTO 5129 _
  2953.           ELSE ZOutTxt$ = "Temporary change" : _
  2954.                GOSUB 12975 : _
  2955.                ZPswd$ = ZTempPassword$ : _
  2956.                ZSecsPerSession! = ZTempTimeAllowed * 60 : _
  2957.                ZUserSecLevel = ZTempSecLevel : _
  2958.                GOSUB 41070 : _
  2959.                ZSysop = (ZUserSecLevel >= ZSysopSecLevel) : _
  2960.                CALL SetPrompt : _
  2961.                CALL XferType (2,ZTrue)
  2962.      IF ZActiveUserName$ = "SYSOP" THEN _
  2963.         ZUserIn$(1) = "********"
  2964. 5126 CALL UpdtCalr ("Used temp password " + ZUserIn$,2)
  2965.      RETURN
  2966. 5129 IF ZOrigUserFile$ <> ZActiveUserFile$ THEN _
  2967.         CALL QuickTPut1 ("Password Change only in Logon User File") : _
  2968.         RETURN
  2969.      GOSUB 12989
  2970.      CALL OpenUser (HighestUserRecord)
  2971.      GOSUB 9450
  2972. 5130 IF ZUserFileIndex < 1 OR _
  2973.         ZUserFileIndex > 32767 THEN _
  2974.         GOTO 5160
  2975.      GET 5,ZUserFileIndex
  2976.      CALL AllCaps (ZUserIn$)
  2977.      LSET ZPswd$ = ZUserIn$
  2978.      GOSUB 9440
  2979.      GOSUB 12991
  2980.      ZOutTxt$ = "Password changed"
  2981.      ZStopInterrupts = ZTrue
  2982.      GOSUB 12975
  2983.      IF ZMaxPswdChanges THEN _
  2984.         ChangeThisSession = ChangeThisSession + 1
  2985. 5131 CALL UpdtCalr ("New Password " + ZUserIn$(1),2)
  2986.      RETURN
  2987. '
  2988. ' ****  SEARCH "PASSWORDS" FILE FOR TEMPORARY PASSWORDS  ***
  2989. '
  2990. 5135 ZWasZ$ = ""
  2991.      WasZ = 0
  2992.      GOSUB 5140
  2993.      IF NOT Found THEN _
  2994.         ZTempTimeAllowed = MinsPerSessionDef : _
  2995.         ZTempMaxPerDay = MaxPerDayDef _
  2996.      ELSE ZTimeLockSet = ZTempTimeLock : _
  2997.           ZDaysInRegPeriod = ZTempRegPeriod
  2998.      ZMinsPerSession = ZTempTimeAllowed
  2999.      ZMaxPerDay = -(ZMaxPerDay * (ZTempMaxPerDay <= 0)) - _
  3000.                     (ZTempMaxPerDay * (ZTempMaxPerDay > 0))
  3001.      IF ZLimitMinsPerSession THEN _
  3002.         IF ZMinsPerSession > ZLimitMinsPerSession THEN _
  3003.            ZMinsPerSession = ZLimitMinsPerSession : _
  3004.            ZOutTxt$ = "Time shortened for external event" : _
  3005.            CALL RingCaller : _                                    'DGS-BRMMod
  3006.            ZCurrHourDGS = 1                                       'DGS-BRM
  3007.      GOSUB 825
  3008.      RETURN
  3009. 5140 Found = ZFalse
  3010.      CALL OpenWork (2,ZPswdFile$)
  3011.      IF ZErrCode = 53 THEN _
  3012.         CALL UpdtCalr ("Missing file " + ZPswdFile$,2) : _
  3013.         IF WasZ = 1 THEN _
  3014.            CALL AllCaps (ZUserIn$(1)) : _
  3015.            ZWasZ$ = ZUserIn$(1) : _
  3016.            GOTO 5160 _
  3017.         ELSE GOTO 5160
  3018.      ZWasZ$ = ZWasZ$ + _
  3019.           SPACE$(15 - LEN(ZWasZ$))
  3020. 5150 IF EOF(2) THEN _
  3021.         GOTO 5160
  3022. 5151 CALL GetPassword
  3023.      IF ZErrCode <> 0 THEN _
  3024.         ZWasEL = 5151 : _
  3025.         GOTO 13000
  3026.      IF LEN(ZTempPassword$) > 15 THEN _
  3027.         GOTO 5150
  3028.      ZTempPassword$ = ZTempPassword$ + _
  3029.                       SPACE$(15 - LEN(ZTempPassword$))
  3030.      IF ZWasZ$ <> ZTempPassword$ THEN _
  3031.         GOTO 5150
  3032.      IF PswdChangeAllowed AND _
  3033.         ZUserSecLevel >= ZMinSecForTempPswd THEN _
  3034.         GOTO 5155
  3035.      IF ZUserSecLevel <> ZTempSecLevel THEN _
  3036.         GOTO 5150
  3037.      IF ZStartTime = 0 THEN _
  3038.         GOTO 5155
  3039.      WorkTime$ = TIME$
  3040.      TestTime = VAL(LEFT$(WorkTime$,2) + MID$(WorkTime$,4,2))
  3041.      IF TestTime => ZStartTime AND TestTime <= ZEndTime THEN _
  3042.         GOTO 5155
  3043.      IF ZEndTime < ZStartTime THEN _
  3044.         IF TestTime => ZStartTime OR TestTime <= ZEndTime THEN _
  3045.            GOTO 5155
  3046.      GOTO 5150
  3047. 5155 Found = ZTrue
  3048. 5160 ZErrCode = 0
  3049.      RETURN
  3050. 5200 CALL PageLen
  3051.      RETURN
  3052. '
  3053. ' ****  J - COMMAND FROM MAIN MENU (JOIN CONFERENCE)  ***
  3054. '
  3055. 5300 WasA1$ = ZConfMenu$
  3056.      CALL BreakFileName (ZActiveMessageFile$,MsgDrvPath$,WasX$,ZWasY$,ZTrue)
  3057. '     CALL Talk (12,ZOutTxt$)  'Pe 02/04/90
  3058. 5301 ZStackC = ZTrue
  3059.      CALL SubMenu ("Choose one--or L to display this menu again ([RETURN] to quit)",_    ' Bh
  3060.          WasA1$,MsgDrvPath$,_
  3061.          "M.DEF","M",ZUserGraphicDefault$,ZTrue,ZFalse,ZFalse,"C.DEF")
  3062.      IF ZWasQ = 0 THEN _
  3063.         RETURN
  3064. '     ZActiveUserName$ = ZOrigUserNameDGS$                         'DGS-ALS
  3065. '     ZFirstName$ = OrigFirstName$                                 'DGS-ALS
  3066.      IF ZSubParm = -1 THEN _
  3067.         RETURN 10595
  3068. 5323 IF ZWasZ$ = "M" OR ZWasZ$ = "MAIN" THEN _
  3069.         IF ZConfName$ = "MAIN" THEN _
  3070.            RETURN _
  3071.         ELSE GOTO 5350
  3072.      IF NOT ZOK THEN _
  3073.         GOTO 5300
  3074.      CLOSE 2
  3075. '
  3076. ' ****  UPDATE PREVIOUS MESSAGE BASE CHECKPOINT RECORD  ***
  3077. '
  3078. 5324 PrevConfName$ = ZConfName$
  3079.      ZConfName$ = ZWasZ$
  3080.      ConfFileName$ = ZConfName$
  3081.      ConfNameSave$ = ZConfName$
  3082.      PrevMsg$ = ZActiveMessageFile$
  3083.      ZActiveMessageFile$ = ZFileName$
  3084.      GOSUB 5343
  3085. '
  3086. ' ****  UPDATE PREVIOUS USER RECORD  ***
  3087. '
  3088. 5325 GOSUB 5380
  3089. '
  3090. ' *****  CHECK WHETHER HAVE SUBBOARD (I.E. CONFIG.DEF EXISTS)  ****
  3091. '
  3092. 5327 UserRecordHold$ = ZUserRecord$
  3093.      ConfModeSave = ZConfMode
  3094.      ZConfMode = ZTrue
  3095.      PrevUser$ = ZActiveUserFile$
  3096.      PrevIndex = ZUserFileIndex
  3097.      PrevMainUser$ = ZMainUserFile$
  3098.      PrevUSL = ZUserSecLevel
  3099.      PrevDef$ = ZCurDef$
  3100. 5328 WasX$ = ZConfName$ + _
  3101.           "C.DEF"
  3102.      CALL FindIt (WasX$)
  3103.      SubBoard = ZOK
  3104.      IF NOT SubBoard THEN _
  3105.         CALL BreakFileName (ZMainMsgFile$,MsgDrvPath$,ZWasDF$,ZWasY$,ZTrue) : _
  3106.         WasX$ = MsgDrvPath$ + WasX$ : _
  3107.         CALL FindIt (WasX$) : _
  3108.         SubBoard = ZOK
  3109.      IF SubBoard THEN _
  3110.         IF LEN(ZConfName$) = 6 THEN _
  3111.            IF LEFT$(ZConfName$,4) = "RBBS" AND RIGHT$(ZConfName$,1) = "P" THEN _ ' JM122203
  3112.               SubBoard = ZFalse
  3113.      IF NOT SubBoard THEN _
  3114.      ZConfigFileName$ = ZOrigCnfg$ : _    'Pe 02/03/90
  3115.      CALL ReadDef (ZConfigFileName$) : _  'Pe 02/03/90
  3116.         CALL BreakFileName (ZActiveUserFile$,UserDrvPath$,ZWasDF$,ZWasY$,ZTrue) : _
  3117.         WasX$ = UserDrvPath$ + _
  3118.              ZConfName$ + _
  3119.              "U.DEF" : _
  3120.         ZFileName$ = ZWelcomeFileDrvPath$ + _
  3121.                      ZConfName$ + _
  3122.                      "W.DEF" _
  3123.         ELSE CALL ReadDef (WasX$) : _
  3124.              IF ZErrCode > 0 THEN _
  3125.                 CALL UpdtCalr ("Error"+STR$(ZErrCode)+" reading config file "+WasX$,2) : _
  3126.                 ZErrCode = 0 : _
  3127.                 ZInConfMenu = ZFalse : _
  3128.                 ZOutTxt$ = "I had trouble reading some data; try again please" : _
  3129.                 GOTO 5341 _
  3130.              ELSE WasX$ = ZMainUserFile$ : _
  3131.                   ZFileName$ = "" : _
  3132.                   CALL FindIt (ZMainMsgFile$) : _
  3133.                   IF NOT ZOK THEN _
  3134.                      ZOutTxt$ = "msg file missing for" : _
  3135.                      ZInConfMenu = ZFalse : _
  3136.                      GOTO 5341 _
  3137.                   ELSE ZActiveMessageFile$ = ZMainMsgFile$ : _
  3138.                        GOSUB 5343
  3139.      UpdateDate = ZTrue
  3140.      CALL FindIt (WasX$)
  3141.      IF ZOK THEN _
  3142.         GOTO 5330
  3143. '
  3144. ' *****  NO USER FILE - A PUBLIC CONFERENCE   ****
  3145. '
  3146.      ZMainUserFile$ = PrevMainUser$
  3147.      IF (ZUserSecLevel < AutoAddSec) THEN _
  3148.         GOTO 5340
  3149.      GOTO 5345
  3150. '
  3151. ' ****  CHECK CONFERENCE USER'S FILE  ***
  3152. '
  3153. 5330 ZActiveUserFile$ = WasX$
  3154.      IF ZMainUserFileIndex < 1 THEN _
  3155.         Found = ZFalse : _
  3156.         ZUserFileIndex = 0 : _
  3157.         GOTO 5335
  3158.      CALL WordInFile (ZConfMenu$,ZConfName$,ZInConfMenu)
  3159.      IF ZActiveUserName$ = "SYSOP" THEN _
  3160.         TempHashValue$ = ZOrigUserName$
  3161.      GOSUB 12598
  3162.      GOSUB 12984
  3163. 5335 IF Found THEN _
  3164.         GOSUB 9500 : _
  3165.         ZMainUserFileIndex = -(SubBoard * ZUserFileIndex)_
  3166.                                -((NOT SubBoard) * ZMainUserFileIndex) : _
  3167.         Temp = -(SubBoard * ZMinLogonSec) _
  3168.                -((NOT SubBoard) * AutoAddSec) : _
  3169.         WasI = (ZUserSecLevel < OrigMainSec) : _
  3170.         WasJ = (ZUserSecLevel < Temp) : _
  3171.         WasK = (WasI AND WasJ) : _
  3172.         IF WasK THEN _
  3173.            ZOutTxt$ = "you have been locked out of" : _
  3174.            GOTO 5341 _
  3175.         ELSE GOSUB 5375 : _
  3176.              GOTO 5345
  3177. '
  3178. ' **** USER NOT FOUND.  AUTO-ADD TO SUBBOARD IF SUFFICIENT SECURITY ***
  3179. '
  3180.      ZNewUser = SubBoard
  3181.      IF SubBoard THEN _
  3182.         AutoAddSec = ZMinLogonSec
  3183.      IF (ZUserSecLevel >= AutoAddSec) AND _
  3184.         (ZUserFileIndex > 0) AND (ZMainUserFileIndex > 0) THEN _
  3185.         LSET ZUserRecord$ = UserRecordHold$ : _
  3186. '        CALL QuickTPut1 ("Adding privileges granted in " + ZConfName$) : _
  3187.         CALL QuickTPut1 ("You have been approved to enter the " + ZConfName$ + " Conference") : _       ' Bh 083190
  3188.         MID$(ZUserOption$,3,2) = MKI$(0) : _
  3189.         MID$(ZUserOption$,1,2) = MKI$(0) : _
  3190.         ZActiveUserName$ = LEFT$(UserRecordHold$,30) : _
  3191.         CALL Trim (ZActiveUserName$) : _
  3192.         Temp = -(SubBoard * ZDefaultSecLevel) _
  3193.                -((NOT SubBoard) * ZUserSecSave) : _
  3194.         GOSUB 5370 : _
  3195.         Temp = -(ZWasA * ZSysopSecLevel) - ((NOT ZWasA) * Temp) : _
  3196.         LSET ZSecLevel$ = MKI$(Temp) : _
  3197.         ZUserSecLevel = Temp : _
  3198.         GOSUB 5375 : _
  3199.         ZPageLength = ZPageLengthDef : _
  3200.         GOSUB 12986 : _
  3201.         GOSUB 12630 : _
  3202.         UpdateDate = ZTrue : _
  3203.         Found = ZTrue : _
  3204.         GOTO 5335
  3205.      IF ZUserSecLevel >= AutoAddSec THEN _
  3206.         CALL QuickTPut1 ("Temporary Privileges granted in " + ZConfName$) : _
  3207.         ZActiveUserFile$ = PrevUser$ : _
  3208.         UpdateDate = ZFalse : _
  3209.         ZUserFileIndex = PrevIndex : _
  3210.         GOSUB 5382 : _
  3211.         ZUserFileIndex = 0 : _
  3212.         GOTO 5345
  3213.      ZNewUser = ZFalse
  3214. 5340 IF ZInConfMenu THEN _
  3215.         ZOutTxt$ = "you are not in conference" _
  3216.      ELSE ZOutTxt$ = "no such option"
  3217. 5341 ZOutTxt$ = ZOutTxt$ + " " + ZConfName$
  3218. '
  3219. ' ****  CANNOT JOIN THE REQUESTED CONFERENCE.  THEREFORE, GO BACK  ***
  3220. '
  3221.      GOSUB 1397
  3222.      ZConfName$ = PrevConfName$
  3223.      ConfFileName$ = ZConfName$
  3224.      IF SubBoard THEN _
  3225.         CALL ReadDef (PrevDef$)
  3226.      ZActiveMessageFile$ = PrevMsg$
  3227.      GOSUB 5343
  3228.      ZUserFileIndex = PrevIndex
  3229.      ZActiveUserFile$ = PrevUser$
  3230.      GOSUB 5382
  3231.      ZConfMode = ConfModeSave
  3232.      GOSUB 12987
  3233.      ZAnsIndex = 0
  3234.      ZLastIndex = 0
  3235.      GOTO 5301
  3236. '
  3237. ' ****  RESTORE A MESSAGE BASE   ***
  3238. '
  3239. 5343 GOSUB 5344
  3240.      GOSUB 23000
  3241.      RETURN
  3242. '
  3243. ' *****  OPEN AND SETUP MESSAGE BASE  *****
  3244. '
  3245. 5344 CALL OpenMsg
  3246.      IF ZErrCode = 64 THEN _
  3247.         ZErrCode = 0 : _
  3248.         GOTO 5350
  3249.      FIELD 1, 128 AS ZMsgRec$
  3250.      RETURN
  3251. '
  3252. ' *****  SUCCESSFUL CONFERENCE JOIN  ****
  3253. '
  3254. 5345 'DGSStl$ = ""                                                 'DGS-ALS
  3255.      'WHILE DGSAlias$ = ""                                         'DGS-ALS
  3256.      '   CALL DGSAlias (ZConfName$,ZOrigUserNameDGS$,DGSAlias$, _  'DGS-ALS
  3257.      '                  DGSStl$,DGSFileName$)                      'DGS-ALS
  3258.      'WEND                                                         'DGS-ALS
  3259.      'DGSAlias$ = ""                                               'DGS-ALS
  3260.  ZNewsFileName$ = ZWelcomeFileDrvPath$ + ZConfName$ + ".NWS"
  3261.      BobToggle=0                                                      ' Bh 090190
  3262.      OPEN ZWelcomeFileDrvPath$ + ZConfName$ + ".TST" for append as #8
  3263.      if lof(8) <> 0 then BobToggle=0 else BobToggle=-1
  3264.      close #8
  3265. ' SELECT CASE code went here
  3266.      OPEN "CONFS.LST" FOR INPUT AS #10
  3267.      DO UNTIL (ZBobName$ = ZConfName$) OR EOF(10)
  3268.          INPUT #10,ZBobName$,ZBobDesc$
  3269.      LOOP
  3270.      CLOSE #10
  3271.      ZConfName$ = ZBobDesc$ + " " + MID$("File CollectionConference",1-15*BobToggle,15)   ' Bh 090190
  3272.      IF ZGlobalSysop THEN _
  3273.         ZActiveUserName$ = "SYSOP"
  3274. 5347 GOSUB 4900
  3275. 5348 GOSUB 12987
  3276.      GOSUB 12990
  3277.      IF SubBoard THEN _
  3278.         ZHasDoored = ZFalse : _
  3279.         ZActiveFMSDir$ = "" : _
  3280.         RETURN 108
  3281.      GOSUB 827
  3282.      IF UpdateDate THEN _
  3283.         BoardCheckDate$ = ZLastDateTimeOn$ : _
  3284.         LSET ZLastDateTimeOn$ = ZCurDate$ + _
  3285.                                   " " + _
  3286.                                   ZTimeLoggedOn$ : _
  3287.         GOSUB 9440 : _
  3288.         GOSUB 12991
  3289.      IF PrevUSL <> ZUserSecLevel THEN _
  3290.         CALL SetPrompt
  3291.      GOSUB 1241
  3292.      RETURN 852
  3293. '
  3294. ' ****  JOIN M)AIN   ***
  3295. '
  3296. 5350 IF ZConfName$ <> "MAIN" THEN _
  3297.         CALL QuickTPut1 ("Returning to Main Menu")                 'Bh 083190
  3298. '        CALL QuickTPut1 ("Rejoining " + OrigMsgName$)
  3299. '     ZActiveUserName$ = ZOrigUserNameDGS$                         'DGS-ALS
  3300. '     ZFirstName$ = OrigFirstName$                                 'DGS-ALS
  3301.      ZConfName$ = "MAIN"
  3302.      ConfFileName$ = OrigMsgName$
  3303.      ZNewsFileName$ = OrigNewsFileName$
  3304.      TurboLogon = ZTrue
  3305.      ZWasQ = 0
  3306.      ZInConfMenu = ZTrue
  3307.      IF ZActiveUserName$ = "SYSOP" THEN _
  3308.         ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$ : _
  3309.         CALL Trim (ZActiveUserName$)
  3310.      ZConfigFileName$ = ZOrigCnfg$
  3311.      CALL ReadDef (ZConfigFileName$)
  3312.      IF ZOrigMsgFile$ <> ZActiveMessageFile$ THEN _
  3313.         ZActiveMessageFile$ = ZOrigMsgFile$ : _
  3314.         GOSUB 5343
  3315.      IF ZOrigUserFile$ <> ZActiveUserFile$ THEN _
  3316.         GOSUB 5380 : _
  3317.         ZActiveUserName$ = ZOrigUserName$ : _
  3318.         GOSUB 12598 : _
  3319.         GOSUB 12990 : _
  3320.         IF Found THEN _
  3321.            GOSUB 9500 : _
  3322.            ZMainUserFileIndex = ZUserFileIndex : _
  3323.            CALL SetPrompt : _
  3324.            CALL XferType (2,ZTrue) _
  3325.         ELSE ZUserFileIndex = 0 : _
  3326.              ZMainUserFileIndex = 0
  3327.      IF ZLocalUserMode OR NOT ZLocalUser THEN _
  3328.         CALL UpdtCalr ("Exited Conference",1)
  3329.      GOSUB 2350
  3330.      ZUplds = ZGlobalUplds
  3331.      ZDnlds = ZGlobalDnlds
  3332.      ZDLToday! = ZGlobalDLToday!
  3333.      ZBytesToday! = ZGlobalBytesToday!
  3334.      ZDLBytes! = ZGlobalDLBytes!
  3335.      ZULBytes! = ZGlobalULBytes!
  3336.      ZBankTime = ZGlobalBankTime        'Pe 03/21/90
  3337. 5360 ZConfMode = ZFalse
  3338.      SubBoard = ZTrue
  3339.      GOSUB 12987
  3340.      RETURN 108
  3341. 5370 RemoteSysop = (ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$)
  3342.      ZWasA = RemoteSysop
  3343.      ZGlobalSysop = (ZGlobalSysop OR (ZWasA AND ZOrigCnfg$ = ZConfigFileName$))
  3344.      IF ZGlobalSysop THEN _
  3345.         ZWasA = ZTrue
  3346.      RETURN
  3347. 5375 IF ((ZUserSecLevel < ZAutoUpgradeSec) AND SubBoard) OR _
  3348.         ((ZUserSecLevel < OrigUpgradeSec) AND NOT SubBoard) THEN _
  3349.            IF ZUserSecLevel <> ZOrigSec THEN _
  3350.               ZUserSecLevel = ZOrigSec : _
  3351.               LSET ZSecLevel$ = MKI$(ZUserSecLevel)
  3352.      RETURN
  3353. '
  3354. ' *****  UPDATE CURRENT USERS RECORD  ****
  3355. '
  3356. 5380 IF ZUserFileIndex < 1 THEN _
  3357.         RETURN
  3358.      IF ZAdjustedSecurity AND NOT ZSysop THEN _
  3359.         LSET ZSecLevel$ = MKI$(ZUserSecLevel) : _
  3360.         ZUserSecSave = ZUserSecLevel
  3361. '     IF SubBoard THEN _                                           'DGS-ALS
  3362. '        ZActiveUserName$ = ZOrigUserNameDGS$ : _                  'DGS-ALS
  3363. '        ZFirstName$ = OrigFirstName$                              'DGS-ALS
  3364.      CALL UpdateU (ZFalse)
  3365.      RETURN
  3366. '
  3367. ' *****  RESTORE A USER RECORD  ****
  3368. '
  3369. 5382 IF ZUserFileIndex < 1 THEN _
  3370.         ZUserSecLevel = ZDefaultSecLevel : _
  3371.         RETURN
  3372.      CALL OpenUser (HighestUserRecord)
  3373.      GET 5,ZUserFileIndex
  3374.      GOSUB 9500
  3375.      RETURN
  3376. '
  3377. ' *****  R - COMMAND FROM UTILITY MENU (REVIEW PROFILE)  ****
  3378. '
  3379. 5400 CALL QuickTPut (Chr$(12),0)       'Pe 02/03/90
  3380.      CALL QuickTPut1 ("Your PROFILE ................")
  3381. 5410 CALL Toggle(-9)
  3382.      GOSUB 43020
  3383.      ZFF = INSTR(ZDefaultXfer$,ZUserXferDefault$)
  3384.      CALL Toggle(-5)
  3385.      GOSUB 42810
  3386.      CALL Toggle(-3)
  3387.      CALL Toggle(-6)
  3388.      CALL Toggle(-7)
  3389.      CALL Toggle(-10)
  3390.      CALL Toggle(-2)
  3391.      CALL Toggle(-4)
  3392.      CALL Toggle(-8)
  3393.      CALL Toggle(-1)
  3394.      IF ZRestrictByDate AND ZDaysInRegPeriod > 0 THEN _
  3395.         IF ZUserSecLevel > ZExpiredSec THEN _
  3396.            CALL QuickTPut1 ("Registration expires " + ZExpirationDate$)
  3397.      RETURN
  3398. '****************** Pe 02/03/90 **********************
  3399. 5450 CALL QuickTPut (Chr$(12),0)
  3400.      CALL QuickTPut ("Your Current setup...",1)
  3401.      CALL QuickTPut ("USER NAME : " + ZActiveUserName$,1)
  3402.      CALL QuickTPut ("SECURITY  :" + STR$(ZUserSecSave),1)
  3403.      CALL QuickTPut ("PASSWORD  : " + ZPswdSave$,1)
  3404.      CALL QuickTPut ("READ MSG. :" + STR$(ZLastMsgRead),1)
  3405.      CALL QuickTPut ("TIMES ON  :" + STR$(ZTimesLoggedOn),1)
  3406.      CALL QuickTPut ("Last ON   : " + ZLastDateTimeOnSave$,1)
  3407.      CALL QuickTPut ("DownLoads :" + STR$(ZDnlds),1)
  3408.      CALL QuickTPut ("Uploads   :" + STR$(ZUplds),1)
  3409.      CALL QuickTPut ("DL-BYTES  :" + STR$(ZDLBytes!),1)
  3410.      CALL QuickTPut ("UL-BYTES  :" + STR$(ZULBytes!),1)
  3411.       IF ZRestrictByDate THEN _
  3412.      CALL QuickTPut ("EXPIRATION: " + ZExpirationDate$,1)
  3413.      CALL QuickTPut ("USER MODE : "+MID$("NoviceExpert",1 -6 * ZExpertUser,6),1)
  3414.      CALL QuickTPut ("Graphics  : " +   MID$("None AsciiColor",GR * 5 + 1,5),1)
  3415.      CALL QuickTPut ("Protocol  : " +  ZUserXferDefault$,1)
  3416.      CALL QuickTPut ("UPPER CASE: " +  MID$("and lowerONLY", 1 - 9 * ZUpperCase,9),1)
  3417.      CALL QuickTPut ("Line Feeds: " + FNOFFON$(ZLineFeeds),1)
  3418.      CALL QuickTPut ("Nulls     : " + FNOFFON$(ZNulls),1)
  3419.      CALL Toggle (-8)
  3420.      CALL Toggle (-5)
  3421.      CALL Toggle (-10)
  3422.      CALL Toggle (-2)
  3423.      CALL Toggle (-4)
  3424. CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)
  3425. RETURN
  3426. '******************* Pe 02/03/90 **********************
  3427. '
  3428. '
  3429. '
  3430. ' *****  B - COMMAND FROM UTILITY MENU (300 TO 450 BAUD CHANGE)  ****
  3431. '
  3432. 5500 CALL BufFile ("UPLOADLG.SRT",WasX)        'Pe 02/03/90    ' Bh 122390
  3433.      CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue) 'Pe 02/03/90 
  3434.         RETURN
  3435. 5502 RETURN 10595  'Entry point when have double nested gosub
  3436. '
  3437. ' *****  V - COMMAND FROM MAIN MENU (VIEW CONFERENCES)  ****
  3438. '
  3439. 5800 CALL ConfMail (MailCheckConfirm)
  3440.      ConfMailJoin = (ZHomeConf$ <> "")
  3441.      RETURN
  3442. '
  3443. ' *  FORMAT MESSAGE HEADER INFORMATION FOR DISPLAY
  3444. '
  3445. 8000 IF ZRet THEN _
  3446.         RETURN
  3447. 8020 IF MID$(ZMsgRec$,37,5) = "ALL  " THEN _
  3448.         MsgTo$ = "ALL" : _
  3449.         GOTO 8040
  3450.      DGSMsgDimIndex = ZMsgDimIndex                                'DGS-MNR
  3451.      DGSRecord$ = ZMsgRec$                                        'DGS-MNR
  3452. 8030 MsgTo$ = MID$(ZMsgRec$,37,22)
  3453.      IF (ZNewUserDGS AND INSTR(MsgTo$,"NEWUSER")) THEN _    'DGS-NEW
  3454.          MsgTo$ = ZActiveUserName$                          'DGS-NEW
  3455.      CALL Trim (MsgTo$)
  3456. 8040 IF LEN(MsgTo$) < 23 THEN _
  3457.         MsgTo$ = MsgTo$ + _
  3458.                       SPACE$(23 - LEN(MsgTo$))
  3459.      Subject$ = MID$(ZMsgRec$,76,25)
  3460.      CALL Trim (Subject$)
  3461.      OrigSubject$ = Subject$
  3462.      IF ZPswdFailed THEN _
  3463.         Subject$ = WasSJ$
  3464. 8050 MsgFrom$ = MID$(ZMsgRec$,6,31)
  3465.      CALL Trim (MsgFrom$)
  3466.      IF LEN(MsgFrom$) < 23 THEN _
  3467.         MsgFrom$ = MsgFrom$ + _
  3468.                         SPACE$(23 - LEN(MsgFrom$))
  3469.      IF ZUserSecLevel >= ZSecChangeMsg THEN _
  3470.         Year$ = "  Security:" + _
  3471.               STR$(MsgSec) _
  3472.         ELSE Year$ = ""
  3473.      IF MID$(ZMsgRec$,101,1) = "!" THEN _
  3474.         MID$(ZMsgRec$,1,1) = "!"
  3475.      ZOutTxt$ = ZFG1$ + "Msg #: " + _
  3476.           LEFT$(ZMsgRec$,5) + _
  3477.           Year$ + SPACE$ (22-LEN(Year$)) + ZConfName$
  3478.      Year$ = ZFG4$ + "   Sent: " + _
  3479.           MID$(ZMsgRec$,68,8) + _
  3480.           " " + _
  3481.           MID$(ZMsgRec$,59,5)
  3482.      IF NOT ZRet THEN _
  3483.         IF ReadMsgs THEN _
  3484.            CALL QuickTPut1 (ZOutTxt$): _
  3485.            WasX$ = MsgFrom$ : _
  3486.            CALL CheckColor (WasX$,SubInHeader$,ZFG2$) : _
  3487.            CALL QuickTPut1 (ZFG2$ + " From:  " + WasX$ + Year$) : _
  3488.            GOSUB 8076 : _
  3489.            WasX$ = MsgTo$ : _
  3490.            CALL CheckColor (WasX$,SubInHeader$,ZFG3$) : _
  3491.            CALL QuickTPut1 (ZFG3$ + "   To:  " + WasX$ + "  " + ZFG2$ + Year$) : _
  3492.            CALL CheckColor (Subject$,SubInHeader$,ZFG4$) : _
  3493.            ZOutTxt$ = ZFG4$ + "   Re:  " + _
  3494.                 Subject$ + ZEmphasizeOff$ _
  3495.         ELSE ZOutTxt$ = ZFG1$ + LEFT$(ZMsgRec$,5) + _
  3496.                   " " + _
  3497.                   MID$(ZMsgRec$,68,5) + _
  3498.                   " " + _
  3499.                   + ZFG2$ + LEFT$(MsgFrom$,18) + _
  3500.                   " -> " + _
  3501.                   + ZFG3$ + LEFT$(MsgTo$,19) + _
  3502.                   " " + _
  3503.                   + ZFG4$ + LEFT$(Subject$,24) + ZEmphasizeOff$ : _
  3504.              CALL CheckColor (ZOutTxt$,SubInHeader$,"") : _
  3505.              GOTO 8080
  3506.      IF QuickScanMsgs OR _
  3507.         ScanMsgs THEN _
  3508.            GOTO 8080 _
  3509.      ELSE GOTO 8077
  3510. 8076 IF MID$(ZMsgRec$,123,6) = STRING$(6,0) OR _
  3511.         MID$(ZMsgRec$,123,6) = SPACE$(6) THEN _
  3512.            Year$ = " Rcvd: -NO-" : _
  3513.            RETURN
  3514.      Year$ = " Rcvd: " + _
  3515.            RIGHT$(STR$(ASC(MID$(ZMsgRec$,123,1))),2) + _
  3516.            "-" + _
  3517.            RIGHT$(STR$(ASC(MID$(ZMsgRec$,124,1))),2) + _
  3518.            "-" + _
  3519.            RIGHT$(STR$(ASC(MID$(ZMsgRec$,125,1))),2) + _
  3520.            " " + _
  3521.            RIGHT$(STR$(ASC(MID$(ZMsgRec$,126,1))),2) + _
  3522.            ":" + _
  3523.            RIGHT$(STR$(ASC(MID$(ZMsgRec$,127,1))),2)
  3524.      FOR WasI = 8 TO 15
  3525.         IF MID$(Year$,WasI,1) = " " THEN _
  3526.            MID$(Year$,WasI,1) = "0"
  3527.      NEXT
  3528.      FOR WasI = 17 TO 21
  3529.         IF MID$(Year$,WasI,1) = " " THEN _
  3530.            MID$(Year$,WasI,1) = "0"
  3531.      NEXT
  3532.      RETURN
  3533. 8077 IF (NOT MsgToCaller) THEN _
  3534.         ZWasA = (MID$(ZMsgRec$,37,5) = "ALL  ") : _
  3535.         IF NOT ZWasA THEN _
  3536.            GOTO 8080
  3537.      IF MsgFromCaller THEN _
  3538.         GOTO 8080
  3539.      Year$ = DATE$
  3540.      WasWK$ = TIME$
  3541.      MID$(ZMsgRec$,123,6) = CHR$(VAL(MID$(Year$,1,2))) + _
  3542.                                    CHR$(VAL(MID$(Year$,4,2))) + _
  3543.                                    CHR$(VAL(MID$(Year$,9,2))) + _
  3544.                                    CHR$(VAL(MID$(WasWK$,1,2))) + _
  3545.                                    CHR$(VAL(MID$(WasWK$,4,2))) + _
  3546.                                    CHR$(VAL(MID$(WasWK$,7,2)))
  3547.      GOSUB 12986
  3548.      PUT 1,ZMsgPtr(ZMsgDimIndex,1)
  3549.      GOSUB 12987
  3550. 8080 GOSUB 12979
  3551.      ZOutTxt$ = ""
  3552.      RETURN
  3553. '
  3554. ' * UNCOMPRESS MESSAGE PRIOR TO DISPLAY
  3555. '
  3556. 9000 IF NOT ZJustSearching THEN _  'Pe 02/05/90
  3557.         GOSUB 4656: _
  3558.         CALL SkipLine (1) : _
  3559.         ZLinesInMsg = 1 : _
  3560.         MsgDimXtra = 150 : _
  3561.         REDIM ZOutTxt$(MsgDimXtra) : _
  3562.         Remain$ = "" : _
  3563.         HiLitedLine = 0
  3564.      FOR WasX = 2 TO VAL(MID$(ZMsgRec$,117,4))
  3565.         WasJ = 1
  3566.         GET 1
  3567.         IF ZJustSearching THEN _   'Pe 02/05/90
  3568.            ZOutTxt$ = ZMsgRec$ : _
  3569.            CALL AllCaps (ZOutTxt$) : _
  3570.            HiLitePos = INSTR(ZOutTxt$,SearchString$) : _
  3571.            IF HiLitePos > 0 THEN _
  3572.               HiLiteRec = LOC(1) : _
  3573.               WasX = 9999 : _
  3574.               GOTO 9090 _
  3575.            ELSE GOTO 9090
  3576. 9050    ZWasB = INSTR(WasJ,ZMsgRec$,CHR$(227))
  3577.         IF ZRet THEN _
  3578.            RETURN
  3579. 9060    ZWasC = ZWasB - WasJ
  3580.         IF ZWasC < 0 THEN _
  3581.            ZWasC = 128
  3582. 9070    ZOutTxt$ = MID$(ZMsgRec$,WasJ,ZWasC)
  3583.         IF HiLiteRec = LOC(1) THEN _
  3584.            IF HiLitePos >= WasJ AND HiLitePos < WasJ+ZWasC THEN _
  3585.               HiLiteRec = -1 : _
  3586.               Bracketed = ZTrue : _
  3587.               ZOutTxt$(0) = ZOutTxt$ : _ 
  3588.               CALL Bracket (ZOutTxt$,HiLitePos-WasJ+1,HiLitePos+LEN(SearchString$)-WasJ,ZEmphasizeOn$,ZEmphasizeOff$)
  3589.         IF ZWasB = 0 THEN _
  3590.            Remain$ = ZOutTxt$ : _
  3591.            GOTO 9090 _
  3592.         ELSE ZOutTxt$ = Remain$ + ZOutTxt$ : _
  3593.              Remain$ = "" : _
  3594.              WasJ = ZWasB + 1
  3595. 9085    IF LEFT$(ZOutTxt$,1) = ZStartOfHeader$ OR _
  3596.            LEFT$(ZOutTxt$,LEN(ZScreenOutMsg$)) = ZScreenOutMsg$ THEN _
  3597.            GOTO 9050
  3598.         ZOutTxt$(ZLinesInMsg) = ZOutTxt$
  3599.         IF Bracketed THEN _
  3600.            Bracketed = ZFalse : _
  3601.            HiLitedLine = ZLinesInMsg
  3602.         ZLinesInMsg = ZLinesInMsg + 1
  3603.         IF ZLinesInMsg > MsgDimXtra THEN _
  3604.            ZLinesInMsg = ZLinesInMsg - 1 : _
  3605.            CALL SkipLine (1) : _
  3606.            CALL QuickTPut1 ("Message too long.  Truncated to " + STR$(MsgDimXtra) + " lines!") : _
  3607.            ZOutTxt$ = "" : _
  3608.            RETURN
  3609.         IF NOT DontPrint THEN _                                      ' KG030201
  3610.            GOSUB 12979 : _                                           ' KG030201
  3611.            IF ZRet THEN _
  3612.               ZOutTxt$ = "" : _
  3613.               RETURN _                                               ' KG030201
  3614.            ELSE CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse) : _   ' KG030201
  3615.                 IF ZNo THEN _                                        ' KG030201
  3616.                    DontPrint = ZTrue                                 ' KG030201
  3617.         GOTO 9050
  3618. 9090 NEXT
  3619.      IF DontPrint = ZTrue THEN _
  3620.         GOTO 5160
  3621.      IF ZJustSearching AND HiLitePos > 0 THEN _  'Pe 02/05/90
  3622.         ZJustSearching = ZFalse : _              'Pe 02/05/90
  3623.         GET 1,ZMsgPtr(ZMsgDimIndex,1) : _
  3624.         GOSUB 8000 : _
  3625.         GOTO 9000
  3626.      ZOutTxt$ = ""
  3627.      RETURN
  3628. '
  3629. ' *  C - COMMAND FROM UTILITY MENU (CLOCK - TIME ON SYSTEM)
  3630. 9099 GOSUB 9100                          'Pe 02/11/89
  3631.      CALL BankTime
  3632.      CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue) 'Pe 02/11/89
  3633.      RETURN                              'PE 02/11/89
  3634. '
  3635. 9100 CALL RptTime
  3636.      RETURN
  3637. '
  3638. ' * WRITE A RECORD TO THE RBBS-PC "USER" FILE
  3639. '
  3640. 9440 IF ZUserFileIndex > 0 AND ZUserFileIndex < 32768 THEN _
  3641.         PUT 5,ZUserFileIndex
  3642.      RETURN
  3643. '
  3644. ' * DEFINE USER FILE RECORD VARIABLES TO COMPENSATE FOR THE BUG IN QUICKBASIC
  3645. ' * THAT REQUIRES A FIELD STATMENT TO BE EXECUTED WITHIN EACH SEPARATELY
  3646. ' * COMPILED PROGRAM -- EVEN THOUGH A FIELD STATEMENT WAS EXECUTED WHEN THE
  3647. ' * FILE WAS OPENED IN ANOTHER SEPERATELY COMPILED SUBROUTINE
  3648. '
  3649. 9450 IF LOF(5) < 1 THEN _
  3650.         ZWasDF$ = ZActiveUserFile$ : _
  3651.         RETURN 13600
  3652.      FIELD 5,31 AS ZUserName$, _
  3653.              15 AS ZPswd$, _
  3654.               2 AS ZSecLevel$, _
  3655.              14 AS ZUserOption$,  _
  3656.              24 AS ZCityState$, _
  3657.               2 AS MachineType$, _
  3658.               1 AS ZBankTime$,_                 'SRK 030690
  3659.               4 AS ZTodayDl$, _
  3660.               4 AS ZTodayBytes$, _
  3661.               4 AS ZDlBytes$, _
  3662.               4 AS ZULBytes$, _
  3663.              14 AS ZLastDateTimeOn$, _
  3664.               3 AS ZListNewDate$, _
  3665.               2 AS ZUserDnlds$, _
  3666.               2 AS ZUserUplds$, _
  3667.               2 AS ZElapsedTime$
  3668.      FIELD 5,128 AS ZUserRecord$
  3669.      RETURN
  3670. '
  3671. ' * GET USER DEFAULTS
  3672. '
  3673. 9500 GOSUB 9450
  3674.      GOSUB 5370
  3675.      IF ZWasA THEN _
  3676.         ZUserSecLevel = ZSysopSecLevel _
  3677.      ELSE ZUserSecLevel = CVI(ZSecLevel$)
  3678.      ZLastMsgRead = CVI(MID$(ZUserOption$,3,2))
  3679.      if len(ZBankTime$) = 0 then ZBankTime$ = chr$(0)     'SRK 030690
  3680.      ZBankTime = ASC(ZBankTime$)                          'SRK 030690
  3681.      ZUserXferDefault$ = MID$(ZUserOption$,5,1)
  3682.      IF ZUserXferDefault$ = " " THEN _
  3683.         ZUserXferDefault$ = "N"
  3684.      CALL XferType (2,ZTrue)
  3685.      WasX = ASC(MID$(ZUserOption$,6,1))
  3686.      ZWasGR = (WasX MOD 3)
  3687.      ZBoldText$ = CHR$(48 - (WasX > 50))
  3688.      ZUserTextColor = (WasX - ZWasGR)/3 + 21
  3689.      IF ZUserTextColor > 37 THEN _
  3690.         ZUserTextColor = ZUserTextColor - 7
  3691.      IF ZEmphasizeOff$ <> "" THEN _
  3692.         CALL QuickTPut (ZColorReset$,0)
  3693.      IF ZEmphasizeOnDef$ <> "" THEN _
  3694.         ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + ";40;" + MID$(STR$(ZUserTextColor),2) + "m" _
  3695.      ELSE ZEmphasizeOff$ = ""
  3696.      IF ZWasGR = 1 AND NOT ZEightBit THEN _
  3697.         ZWasGR = 0
  3698.      CALL SetGraphic (ZWasGR, ZUserGraphicDefault$)
  3699.      ZRightMargin = CVI(MID$(ZUserOption$,7,2))
  3700.      IF ZRightMargin > 72 THEN _
  3701.         ZRightMargin = 72
  3702.      ZWasCI$ = ZCityState$
  3703.      CALL Trim (ZWasCI$)
  3704. 9510 UserOptions = CVI(MID$(ZUserOption$,9,2))
  3705.      ZPromptBell = (UserOptions AND 1) > 0
  3706.      ZExpertUser = (UserOptions AND 2) > 0
  3707.      CALL SetExpert
  3708.      ZNulls = (UserOptions AND 4) > 0
  3709.      ZUpperCase = (UserOptions AND 8) > 0
  3710.      ZLineFeeds = (UserOptions AND 16) > 0
  3711.      ZCheckBulletLogon = (UserOptions AND 32) > 0
  3712.      ZSkipFilesLogon = (UserOptions AND 64) > 0
  3713.      ZAutoDownDesired = (UserOptions AND 128) > 0
  3714.      ZReqQuesAnswered = (UserOptions AND 256) > 0
  3715.      ZMailWaiting = (UserOptions AND 512) > 0
  3716.      WasX = (UserOptions AND 1024 ) > 0
  3717.      CALL SetHiLite (NOT WasX)
  3718.      IF NOT ZHiLiteOff THEN _
  3719.         CALL QuickTPut (ZEmphasizeOff$,0)
  3720.      ZTurboKeyUser = (UserOptions AND 2048) > 0
  3721.      ZTurboKey = ZFalse
  3722.      GOSUB 11480
  3723.      ZPageLength = ASC(MID$(ZUserOption$,13,1))
  3724.      IF SubBoard THEN _
  3725.         GOTO 9520
  3726.      WasX$ = ZEchoer$
  3727.      ZEchoer$ = MID$(ZUserOption$,14,1)
  3728.      IF INSTR("ICR",ZEchoer$) = 0 THEN _
  3729.         ZEchoer$ = "R"
  3730.      IF WasX$ <> ZEchoer$ THEN _
  3731.         GOSUB 9525
  3732.      CALL SetEcho (ZEchoer$)
  3733. 9520 ZNul$ = MID$(STRING$(5,0),1, - 5 * ZNulls)
  3734.      CALL SetCrLf
  3735.      ZUseTPut = (ZUpperCase OR ZXOnXOff)
  3736.      ZPswdSave$ = ZPswd$
  3737.      RETURN
  3738. 9525 IF ZEchoer$ = "R" THEN _
  3739.         ZOutTxt$ =  "RBBS now set" _
  3740.      ELSE IF ZEchoer$ = "C" THEN _
  3741.              ZOutTxt$ = "Please set your communications package" _
  3742.           ELSE ZOutTxt$ = "Intermediate host now set"
  3743.      CALL QuickTPut1 (ZOutTxt$ + " to echo what you type")
  3744.      RETURN
  3745. '
  3746. ' *  B - COMMAND FROM MAIN MENU (READ BULLETINS)
  3747. '
  3748. 9700 ReturnOn$ = "*SN"
  3749.      WasA1$ = ZBulletinMenu$
  3750. 9701 CALL SubMenu ("Choose one, or L to list this menu again, or [RETURN] for Main Menu",_  ' Bh
  3751.                    WasA1$, ZBulletinPrefix$,"",ReturnOn$,_
  3752.                    ZUserGraphicDefault$,ZFalse,ZFalse,ZFalse,"")
  3753.      IF ZWasQ = 0 THEN _
  3754.         RETURN
  3755.      CALL CheckCarrier
  3756.      IF ZSubParm = -1 THEN _
  3757.         RETURN 10595
  3758.      IF (ZWasZ$ = "*" OR ZWasZ$ = "S") THEN _
  3759.         ZPrevPrefix$ = "" : _
  3760.         GOTO 9760
  3761.      ZStopInterrupts = ZFalse
  3762.      IF ZWasZ$ = "N" THEN _
  3763.         GOSUB 1242 : _ 
  3764.         IF WasZ <> 0 THEN _
  3765.            CALL QuickTPut1 ("No NEWS available") : _
  3766.            GOTO 9701 _
  3767.         ELSE GOTO 9703
  3768.      CALL BufFile (ZFileName$,ZAnsIndex)
  3769. 9703 CALL UpdtCalr ("Read bulletin " + ZFileName$,1)
  3770.      GOTO 9701
  3771. '
  3772. ' *  CHECK AND REVIEW NEW BULLETINS SINCE Last LOGON
  3773. '
  3774. 9750 CALL CheckNewBul (BoardCheckDate$,NumNewBullets,NewBullets$)
  3775.      RETURN
  3776. 9760 ' ****  [entry when want review plus chance to read] *********
  3777.      GOSUB 9750
  3778.      IF NumNewBullets > 0 THEN _
  3779.         ZLastIndex = NumNewBullets + 1 : _
  3780.         ZOutTxt$ = "Read ALL new bulletins ([Y],N)" : _
  3781.         GOSUB 12999 : _
  3782.         IF NOT ZNo THEN _
  3783.            ZAnsIndex = 1: _
  3784.            GOTO 9700
  3785.      ZLastIndex = 0
  3786.      IF ZAnsIndex < 1 THEN _
  3787.         RETURN
  3788.      GOTO 9701
  3789. '
  3790. ' *  W - COMMAND FROM MAIN MENU (WHO'S ON THE OTHER NODES)
  3791. '
  3792. 9800 CALL WhosOn (NodesInSystem)
  3793.      CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue) 'Pe 02/11/89 
  3794.      GOSUB 5344
  3795.       RETURN
  3796. '
  3797. '***       CHAt Mod ***********
  3798. 9801' IF NodesInSystem < 2 THEN _                                        'CHT021301
  3799.     ' RETURN
  3800.     ' ZOutTxt$ = "CHAT with another Node  Y/[N] "
  3801.     '    GOSUB 12999
  3802.     ' IF NOT ZYes THEN _
  3803.     '    RETURN
  3804.     '  CALL CBChat(NodesInSystem)
  3805.     '     GOSUB 5344
  3806.     '   RETURN
  3807.  
  3808. '
  3809. ' *  1 - COMMAND FROM SYSOP MENU (DISPLAY COMMENTS)
  3810. '
  3811. 10070 'CALL Muzak (7)  'Pe 02/04/90
  3812.       ZFileName$ = ZCmntsFile$
  3813.       IF NOT ZStopInterrupts THEN _
  3814.          ZOutTxt$ = "* Ctrl-K(^K) / ^X aborts. ^S suspends, ^Q resumes *" : _
  3815.          GOSUB 12976
  3816.       GOSUB 20150
  3817.       RETURN
  3818. '
  3819. ' *  U - COMMAND FROM UTILITY MENU (DISPLAY USERS)
  3820. ' *  2 - COMMAND FROM SYSOP MENU (DISPLAY USERS)
  3821. '
  3822. 10090 'CALL Muzak (6)  'Pe 02/04/90
  3823.       ZOutTxt$ = "List - U)sers, R)ecent callers"
  3824.       CALL SkipLine (1)
  3825.       GOSUB 12930
  3826.       IF ZWasQ = 0 THEN _
  3827.          RETURN
  3828.       CALL AllCaps (ZUserIn$(ZAnsIndex))
  3829.       ON INSTR("UR",ZUserIn$(ZAnsIndex)) + 1 GOTO 10090,10096,10093
  3830. 10093 IF (ZUserSecLevel < ZSysopSecLevel) OR NodesInSystem <=1 THEN _ 'PE Cal
  3831.                 CALL DispCall : RETURN                                'CAL
  3832.       ZOutTxt$ = "Display which node: (1-"+STR$(NodesInSystem)+")"    'CAL
  3833.       CALL SkipLine (1)                                               'CAL
  3834.       GOSUB 12999                                                     'CAL
  3835.       IF VAL(ZUserIn$(ZAnsIndex)) > NodesInSystem THEN RETURN         'CAL
  3836.       IF LEN(ZUserIn$(ZAnsIndex)) = 0 THEN RETURN                     'CAL
  3837.       ZCallersFile$ = LEFT$(ZCallersFile$,LEN(ZCallersFile$)-1) + _   'CAL
  3838.                             ZUserIn$(ZAnsIndex)                       'CAL
  3839.       CALL SetCall                                                    'CAL
  3840.       CALL DispCall                                                   'CAL
  3841.       ZCallersFile$ = ZOrigCallers$                                   'CAL
  3842.       CALL SetCall                                                    'CAL
  3843.       RETURN                                                      'DGS-CAL
  3844. 10096 UserRecordHold$ = ZUserRecord$
  3845.       GOSUB 12700
  3846.       CALL OpenUser (HighestUserRecord)
  3847.       GOSUB 9450
  3848.       ZStopInterrupts = ZFalse
  3849.       ZNonStop = (ZPageLength < 1)
  3850.       WasI = 1
  3851.       ZWasZ$ = ZSysopPswd1$ + " " + ZSysopPswd2$
  3852. 10097 IF WasI > HighestUserRecord OR ZRet THEN _
  3853.          GOTO 10099
  3854.       GET 5,WasI
  3855.       WasX$ = MID$(ZUserRecord$,ZStartHash,ZLenHash)
  3856.       IF ASC(WasX$)=0 OR LEFT$(WasX$,3)="   " OR LEFT$(ZPswd$,3)="   " THEN _
  3857.          GOTO 10098
  3858.       IF INSTR(WasX$,ZWasZ$) > 0 OR ZSysopSecLevel <= CVI(MID$(ZUserRecord$,47,2)) THEN _
  3859.          IF NOT ZSysop THEN _
  3860.             GOTO 10098
  3861.       CALL AskMore ("",ZTrue,ZTrue,WasXX,ZFalse)
  3862.       IF ZNo OR ZSubParm = -1 THEN _
  3863.          GOTO 10099
  3864.       ZOutTxt$ = LEFT$(WasX$,36) + ZCityState$ + ZLastDateTimeOn$
  3865.       GOSUB 12979
  3866. 10098 WasI = WasI + 1
  3867.       GOTO 10097
  3868. 10099 ZOutTxt$ = ""
  3869.       LSET ZUserRecord$ = UserRecordHold$
  3870.       ZStopInterrupts = ZTrue
  3871.       RETURN
  3872. '
  3873. ' *  3 - COMMAND FROM SYSOP MENU (RECOVER MESSAGES)
  3874. '
  3875. 10390 MsgRecovered = ZFalse
  3876. 10391 ZOutTxt$ = "Recover Msg #" + ZPressEnter$
  3877.       GOSUB 12932
  3878.       CALL CheckInt (ZUserIn$(ZAnsIndex))
  3879.       IF ZErrCode <> 0 THEN _
  3880.          GOTO 10391
  3881.       MsgToRecover = ZTestedIntValue
  3882.       IF MsgToRecover < 1 THEN _
  3883.          GOTO 10392
  3884.       GOSUB 5344
  3885.       ActionFlag = ZFalse
  3886.  CALL RecoverMsg (MsgToRecover,FirstMsgRecord,ActionFlag,ZConfName$) 'Pe 02/03/90
  3887.       MsgRecovered = MsgRecovered OR ActionFlag
  3888.       GOTO 10391
  3889. 10392 IF MsgRecovered THEN _
  3890.          ActionFlag = ZTRUE : _
  3891.          GOTO 1900
  3892.       RETURN
  3893. '
  3894. ' *  4 - COMMAND FROM SYSOP MENU (DELETE COMMENTS)
  3895. '
  3896. 10530 ZOutTxt$ = "Delete comments (Y/[N])"
  3897.       GOSUB 12995
  3898.       IF ZYes THEN _
  3899.          CALL OpenOutW (ZCmntsFile$)
  3900.       CLOSE 2
  3901. 10550 RETURN
  3902. '
  3903. ' *  TIME LIMIT EXCEEDED EXIT
  3904. '
  3905. 10553 CALL UpdtCalr ("Time limit exceeded",1)
  3906.  CALL QuickTPut1 ("Sorry "+ZFirstName$ +" Your time limit has expired")
  3907.       GOTO 10562                                   'Pe 02/03/90
  3908.      
  3909. '
  3910. ' *  Q - COMMAND FROM GLOBAL FUNCTIONS
  3911. 10560 GOSUB 41000      'Pe 02/04/90
  3912.       IF ZExpertUser THEN Logoff$ = "L"
  3913. '      IF ZYes AND ZConfMode AND _
  3914. '         ZCmntsAsMsgs THEN LOGOZFF$ = "L"
  3915.       IF Logoff$ = "L" THEN 10562
  3916. '
  3917. 10562 GOSUB 9100              'Pe 02/03/90
  3918.       IF NOT ZSysop AND _
  3919.          ZUserSecLevel < ZSecExemptFromEpilog THEN _
  3920.            ZFileName$ = ZEpilog$ : _
  3921. '           GOSUB 11520          ' Bh BETTER FIX THIS
  3922.       IF ZLocalUserMode OR NOT ZLocalUser THEN _
  3923.          CALL UpdtCalr ("Logged off",1)
  3924.       'CALL Muzak (4)   'Pe 02/04/90
  3925.       GOTO 10595
  3926. 10570 GOSUB 41000    'Pe 02/04/90
  3927.      CALL QuickTPut ("  A)bort Logoff "+ ZCrLf$+ _
  3928.                      "  C)omment to Sysop then log off "+ZCrLf$ + _
  3929.                      "  G)o ahead Log me off (NO Comment) " + ZCrLf$ ,1)
  3930. ZOutTxt$ =  "  Enter Choice (A,C,[G]) "
  3931.         ZSubParm = 1
  3932.        ZTurboKey = -ZTurboKeyUser
  3933.         CALL TGet
  3934.         CALL AllCaps (ZUserIn$)
  3935.         WasX = INSTR("ACG",ZUserIn$)
  3936.         IF ZUserIn$ = "" THEN _
  3937.            GetOut = ZTrue : _
  3938.            GOTO 10562
  3939.     ON WasX GOTO 10571,10572,10573
  3940.     GOTO 10573
  3941. 10571 RETURN
  3942. 10572 LogOff$ = "G"
  3943.       GetOut = ZTrue
  3944.       GOTO 1800
  3945. 10573 GetOut = ZTrue
  3946.       LogOff$ = "L"     'Pe 02/04/89
  3947.       GOTO 10560
  3948. '10574 GOSUB 9099        'Pe 03/20/90
  3949. '      GOTO 10570
  3950. 10590 CALL UpdtCalr ("Sleep Disconnect",1)
  3951.       SubBoard = ZFalse
  3952. 10595 CALL GetTime
  3953.       GOSUB 13700
  3954.       IF ZDnldCompleted = ZTrue AND ZAutoEnd = 1 THEN _    'AUTOLOGOFF MOD
  3955.       GOSUB 46000  'Pe 02/03/90
  3956.       ZSubParm = 0
  3957.       CALL Carrier
  3958.       IF ZSubParm = -1 THEN _
  3959.          GOTO 10597
  3960.       IF ZConfName$ = OrigMsgName$ THEN _
  3961.          GetOut = ZTrue
  3962.       IF (SubBoard AND (NOT GetOut) AND (NOT ZSleepDisconnect)) THEN _
  3963.          GOSUB 5380 : _
  3964.          ZHomeConf$ = "M" : _
  3965.          CALL QuickTPut1 ("Time limit exceeded in " + ZConfName$) : _
  3966.          SubBoard = ZFalse : _
  3967.          GOTO 1205
  3968. 10597 CALL UpdateU (ZTrue)
  3969.       GOTO 13540
  3970. 10620 CALL UpdtCalr(ZWasLG$(ZLogonErrorIndex),2)
  3971.       IF ZExitToDoors THEN _
  3972.          CALL UpdateU (ZTrue)
  3973. 10621 IF ZActiveUserName$ = "" THEN _
  3974.          ZActiveUserName$ = "NAME UNAVAILABLE"
  3975.       ZWasZ$ = ZActiveUserName$ + _
  3976.            " on at " + _
  3977.            ZCurDate$ + _
  3978.            ", " + _
  3979.            ZTime$ + _
  3980.            "** LOGON DENIED **, " + _
  3981.            ZBaudParity$
  3982.       ZWasNG$ = ZWasZ$ + _
  3983.             SPACE$(128 - LEN(ZWasZ$))
  3984. 10698 'CALL Muzak (5)  'Pe 02/04/90
  3985.       IF ZFunctionKey = 22 THEN _
  3986.          GOTO 13545
  3987.       ZOutTxt$ = "Access denied!"
  3988.       GOSUB 12976
  3989.       CALL DelayTime (8 + ZBPS)
  3990.       GOTO 13545
  3991. '
  3992. ' *  M - COMMAND FROM UTILITY MENU (CHANGE MARGINS)
  3993. '
  3994. 10925 UtilMarginChange = ZTrue
  3995.       GOSUB 3100
  3996.       UtilMarginChange = ZFalse
  3997.       RETURN
  3998. '
  3999. ' *  7 - COMMAND FROM SYSOP MENU (EXIT TO DOS)
  4000. '
  4001. 10930 IF ZDosVersion < 2 OR _
  4002.          (ZRequiredRings = 0 AND NOT ZNoDoorProtect) THEN _
  4003.          CALL QuickTPut1 ("Remote DOS unavailable") : _
  4004.          RETURN
  4005. 10932 IF ZLocalUser AND NOT ZDebug THEN _
  4006.          CALL QuickTPut1 ("Only for remote SYSOP's") : _
  4007.          RETURN
  4008.       CALL DosExit
  4009.       ZSubParm = -9
  4010.       CALL FindFKey
  4011.       GOTO 202
  4012. '
  4013. ' *  D - COMMAND FROM MAIN MENU (EXIT TO DOORS)
  4014. '
  4015. 10970 IF NOT ZDoorsAvail OR _
  4016.          (ZRequiredRings = 0 AND NOT ZNoDoorProtect) THEN _
  4017.          CALL QuickTPut1 ("No doors available !") : _
  4018.          RETURN
  4019.       IF ZTimeLock AND 1 AND NOT ZHasDoored THEN _
  4020.          CALL TimeLock : _
  4021.          IF NOT ZOK THEN _
  4022.             RETURN
  4023. 10974 WasA1$ = ZMenu$(5)
  4024. '      CALL Talk (5,ZOutTxt$)  'Pe 02/04/90
  4025.       ZStackC = ZTrue
  4026.       CALL SubMenu ("Choose one, or L to display this menu again" + ZPressEnterExpert$, _   ' Bh
  4027.                     WasA1$,"",".BAT","",_
  4028.                     ZUserGraphicDefault$,ZTrue,ZFalse,ZTrue,"")
  4029.       IF ZWasQ = 0 THEN _
  4030.          RETURN
  4031.       IF ZSubParm = -1 THEN _
  4032.          RETURN 10595
  4033. 10986 ZWasZ$ = ZFileName$
  4034.       CALL DoorExit
  4035.       RETURN
  4036. '
  4037. ' *  5 - COMMAND FROM SYSOP MENU (USER FILE MAINTENANCE)
  4038. '
  4039. 11000 WasTU = ZUserFileIndex
  4040.       CALL DefaultU
  4041.       UserRecordHold$ = ZUserRecord$
  4042.       RegDateHold$ = ZRegDate$
  4043. 11001 ZStopInterrupts = ZTrue
  4044.       WasI = 1
  4045.       ScanUsers = ZFalse
  4046.       IF EditFromRead = 1 THEN GOTO 11341
  4047.       ZTurboKey = -ZTurboKeyUser
  4048.       ZOutTxt$ = "A)dd, L)st, P)rt, M)od, S)can users"
  4049.       GOSUB 12998
  4050. 11003 IF ZWasQ = 0 THEN _
  4051.       IF EditFromRead > 0 THEN _
  4052.          GOTO 11325 _
  4053.       ELSE _
  4054.          ZUserFileIndex = WasTU : _
  4055.          GOTO 20093
  4056.       WasQQ = 0
  4057.       ZWasZ$ = LEFT$(ZUserIn$(1),1)
  4058.       CALL AllCaps (ZWasZ$)
  4059.       IF ZWasZ$ = "A" THEN _
  4060.          GOTO 12300 _
  4061.       ELSE IF ZWasZ$ = "M" THEN _
  4062.               ZStopInterrupts = ZTrue _
  4063.            ELSE IF ZWasZ$ = "P" THEN _
  4064.                    WasQQ = ZTrue _
  4065.                 ELSE IF ZWasZ$ = "S" THEN _
  4066.                         ScanUsers = ZTrue : _
  4067.                         ZStopInterrupts = ZTrue _
  4068.                      ELSE IF ZWasZ$ <> "L" THEN _
  4069.                              GOTO 11001
  4070. 11005 CALL OpenUser (HighestUserRecord)
  4071.       GOSUB 9450
  4072.       WasZ = 1
  4073.       IF ScanUsers THEN _
  4074.          ZOutTxt$ = "Scan for N)ame, P)wd, C)" + ZUserLocation$ + ", L)evel" + _
  4075.               LEFT$(", H)ash id",-9*(ZStartHash > 1 AND ZLenHash > 0)) : _
  4076.          GOSUB 12999 : _
  4077.          ZOutTxt$ = "" : _
  4078.          ScanFunction$ = LEFT$(ZUserIn$(1),1) : _
  4079.          CALL AllCaps (ScanFunction$) : _
  4080.          ZCR = 0 : _
  4081.          GOSUB 12979 : _
  4082.          GOSUB 12966 : _
  4083.          GOTO 12962
  4084. 11010 FOR WasJ = WasZ TO HighestUserRecord
  4085.          GET 5,WasJ
  4086. 11015    WasX$ = MID$(ZUserRecord$,ZStartHash,ZLenHash)
  4087.          IF ASC(WasX$) = 0 OR LEFT$(WasX$,3) = "   " THEN _
  4088.             GOTO 11310
  4089.          WasOF = CVI(ZSecLevel$)
  4090.          IF WasOF > ZUserSecLevel THEN _
  4091.             IF NOT ZGlobalSysop THEN _
  4092.                GOTO 11310
  4093.          ZOutTxt$ = ZFG4$ + RIGHT$("     " + STR$(LOC(5)),4) + _
  4094.               ":" + _
  4095.               ZFG1$ + ZUserName$ + _
  4096.               ZFG2$ + "SECURITY" + _
  4097.               RIGHT$("     " + STR$(WasOF),5) + _
  4098.               " "
  4099. 11020    ZOutTxt$ = ZOutTxt$ + _
  4100.               ZFG3$ + "Password = " + _
  4101.               ZPswd$ + ZEmphasizeOff$
  4102. 11025    IF WasQQ THEN _
  4103.             CALL Printit (ZOutTxt$)
  4104. 11027    GOSUB 12979
  4105.          IF ZRet <> 0 THEN _
  4106.             GOTO 11330
  4107.          IF WasOF < OrigMainSec THEN _
  4108.             ZOutTxt$ = ZEmphasizeOn$ + "<Locked out>" + ZEmphasizeOff$ + SPACE$(7) : _
  4109.             GOTO 11030
  4110.          IF WasOF >= ZSysopSecLevel THEN _
  4111.             ZOutTxt$ = ZEmphasizeOn$ + "  (SYSOP)  " + ZEmphasizeOff$ + SPACE$(8) : _
  4112.             GOTO 11030
  4113.          ZOutTxt$ = SPACE$(19)
  4114. 11030    ZOutTxt$ = ZOutTxt$ + _
  4115.               ZLastDateTimeOn$ + _
  4116.              "   " + _
  4117.              ZFG4$ + ZCityState$ + ZEmphasizeOff$
  4118. 11100    IF WasQQ THEN _
  4119.             CALL Printit (ZOutTxt$)
  4120. 11101    CALL QuickTPut1 (ZOutTxt$)
  4121.         IF ZRet <> 0 THEN _
  4122.            GOTO 11330
  4123.         ZOutTxt$ = "  DOWNLOADS = " + _
  4124.              RIGHT$("     " + STR$(CVI(ZUserDnlds$)),5) + _
  4125.              "   " + _
  4126.              "UPLOADS = " + _
  4127.              RIGHT$("     " + STR$(CVI(ZUserUplds$)),5) + _
  4128.              "   " + _
  4129.              " Times on ="
  4130.          ZOutTxt$ = ZOutTxt$ + RIGHT$("     " + STR$(CVI(MID$(ZUserOption$,1,2))),5) + _
  4131.              "   " + _
  4132.              "TIME USED = " + _
  4133.              RIGHT$("    " + STR$(CVI(ZElapsedTime$)),4) + _
  4134.              " Min"
  4135.         IF WasQQ THEN _
  4136.            CALL Printit (ZOutTxt$)
  4137. 11105   CALL QuickTPut1 (ZOutTxt$)
  4138.         IF ZRet <> 0 THEN _
  4139.            GOTO 11330             'Pe 02/03/90
  4140.           ZOutTxt$ = "BYTES: Dwn=" + STR$(CVS(ZDlBytes$)) + _
  4141.               "  Up=" + STR$(CVS(ZULBytes$)) + _
  4142.               " TODAY Dwn: #=" + STR$(CVS(ZTodayDl$)) + _
  4143.               " Bytes=" + STR$(CVS(ZTodayBytes$)) +ZCrLF$ + _
  4144.               " Banked Time=" + STR$(ASC(ZBankTime$))      'Pe 03/21/90
  4145.          IF WasQQ THEN _
  4146.             CALL Printit (ZOutTxt$)
  4147.          CALL QuickTPut1 (ZOutTxt$)
  4148.          IF ZRet <> 0 THEN _
  4149.             GOTO 11330
  4150. 11106   IF (ZStartIndiv = 0 OR ZLenIndiv = 0) AND _
  4151.            (ZStartHash = 0 OR ZLenHash = 0) AND _
  4152.            NOT ZRestrictByDate THEN _
  4153.               GOTO 11107
  4154.         IF (ZStartHash > 1 AND ZLenHash > 0) THEN _
  4155.            ZOutTxt$ = "Hash: " + MID$(ZUserRecord$,ZStartHash,ZLenHash) _
  4156.         ELSE ZOutTxt$ = ""
  4157.         IF (ZStartIndiv > 1 AND ZLenIndiv > 0) THEN _
  4158.            ZOutTxt$ = ZOutTxt$ + " Indiv: " + MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv)
  4159.         IF ZRestrictByDate THEN _
  4160.             GOSUB 11480 : _
  4161.             ZOutTxt$ = ZOutTxt$ + "  Registered: " + _
  4162.                  RegDisplayDate$
  4163.         CALL QuickTPut1 (ZOutTxt$)
  4164.         IF WasQQ THEN _
  4165.            CALL Printit (ZOutTxt$)
  4166.         IF ZRet <> 0 THEN _
  4167.            GOTO 11330
  4168. 11107   IF NOT ZStopInterrupts THEN _
  4169.            GOTO 11310
  4170. 11110   ZOutTxt$ = "D)el,F)ind,M)enu,N)ewPW,P)rnt,R)eset gr,Q)uit" +ZCrLf$
  4171.         ZOutTxt$ = ZOutTxt$ +"S)ecLvl,U)ser#,X)fers,T)imeUsed,B)ankTime" 'Pe 03/21/90
  4172.         IF ZRestrictByDate THEN _
  4173.            ZOutTxt$ = ZOutTxt$ + _
  4174.                 ",$)RegDate"
  4175.         GOSUB 12999
  4176.         IF NOT ScanUsers AND ZWasQ = 0 THEN _
  4177.            GOTO 11310
  4178. 11115   ZWasZ$ = LEFT$(ZUserIn$(1),1)
  4179.         CALL AllCaps (ZWasZ$)
  4180.         WasX = INSTR("DNPQFSMR$UXTB",ZWasZ$)   'Pe 03/21/90
  4181.         IF ZWasZ$ = "" AND ScanUsers THEN _
  4182.            GOTO 12965
  4183.         ON WasX GOTO 11130,11160,11220,11320,11340,11390,11330,11400,11450,11127,11490,11420,11430 ' Pe 03/21/90
  4184.         GOTO 11110
  4185. 11125   WasZ = VAL(ZUserIn$)
  4186.         IF WasZ < 1 OR WasZ > HighestUserRecord THEN _
  4187.            GOTO 11127
  4188.         GOTO 11010
  4189. 11127   ZOutTxt$ = "What record #"
  4190.         GOSUB 12995
  4191.         GOTO 11125
  4192. '
  4193. ' *  D - COMMAND FROM 5- USER MAINTENANCE OPTIONS (DELETE USER)
  4194. '
  4195. 11130   ZOutTxt$ = "Delete user (Y/[N])"
  4196.         GOSUB 12995
  4197.         IF ZYes THEN _
  4198.            LSET ZUserName$ = CHR$(0) + _
  4199.                              "deleted user" : _
  4200.            LSET ZSecLevel$ = MKI$(ZMinLogonSec - 1) : _
  4201.            LSET ZLastDateTimeOn$ = "01-01-80" + _
  4202.                                      " " + _
  4203.                                      ZTimeLoggedOn$
  4204.         GOTO 11290
  4205. '
  4206. ' *  N - COMMAND FROM 5- USER MAINTENANCE OPTIONS (CHANGE USER PASSWORD)
  4207. '
  4208. 11160   GOSUB 12800
  4209.         GOTO 11290
  4210. '
  4211. ' *  P - COMMAND FROM 5- USER MAINTENANCE OPTIONS (PRINT USER FILE)
  4212. '
  4213. 11220   WasQQ = NOT WasQQ
  4214.         GOTO 11015
  4215. 11290   ZUserFileIndex = LOC(5)
  4216.         GOSUB 12989
  4217.         GOSUB 9440
  4218.         GOSUB 12991
  4219.         ZUserFileIndex = 0
  4220.         GOTO 11015
  4221. 11310   IF ScanUsers THEN _
  4222.            GOTO 12965
  4223. 11311 NEXT
  4224. '
  4225. ' *  Q - COMMAND FROM 5- USER MAINTENANCE OPTIONS (QUIT TO MAIN MENU)
  4226. '
  4227. 11320 ZUserFileIndex = WasTU
  4228.       LSET ZUserRecord$ = UserRecordHold$
  4229.       ZRegDate$ = RegDateHold$
  4230.       IF EditFromRead > 0 THEN _
  4231.          GOTO 11325
  4232.       RETURN 1200
  4233. 11325 ZReply = ZFalse
  4234.       JustReplied = ZTrue
  4235.       QuotedReply = ZTrue
  4236.       EditFromRead = 0
  4237.       CALL GetMsgAttr
  4238.       DontPrint = ZTrue
  4239.       ZUserIn$ = "="
  4240.       GOTO 4560
  4241. '
  4242. ' *  M - COMMAND FROM 5- USER MAINTENANCE OPTIONS (MAIN USER MAINT. MENU)
  4243. '
  4244. 11330 CLOSE 2
  4245.       IF EditFromRead > 0 THEN _
  4246.          EditFromRead = 2
  4247.       GOTO 11001
  4248. '
  4249. ' *  F - COMMAND FROM 5- USER MAINTENANCE OPTIONS (FIND USER)
  4250. '
  4251. 11340 ZOutTxt$ = ZPromptHash$ + _
  4252.            " to find"
  4253.       CALL SkipLine (1)
  4254.       GOSUB 12995
  4255.       IF ZWasQ = 0 THEN _
  4256.          GOTO 11340
  4257.       TempHashValue$ = ZUserIn$
  4258. 11341 IF LEN(TempHashValue$) < 3 OR LEN(TempHashValue$) > ZLenHash THEN _
  4259.          GOTO 11340
  4260.       CALL AllCaps (TempHashValue$)
  4261.       IF ZStartIndiv < 1 THEN _
  4262.          GOTO 11345
  4263. 11342 ZOutTxt$ = ZPromptIndiv$ + _
  4264.            " to find"
  4265.       GOSUB 12995
  4266.       IF ZWasQ = 0 THEN _
  4267.          GOTO 11342
  4268.       TempIndivValue$ = ZUserIn$
  4269.       IF LEN(TempIndivValue$) > ZLenIndiv THEN _
  4270.          GOTO 11342
  4271.       CALL AllCaps (TempIndivValue$)
  4272. 11345 GOSUB 12600
  4273.       GOSUB 12984
  4274.       ZUserFileIndex = 0
  4275.       IF Found THEN _
  4276.          GOTO 11015
  4277. 11380 ZOutTxt$ = TempHashValue$ + _
  4278.            " " + _
  4279.            TempIndivValue$ + _
  4280.            " not found"
  4281.       GOSUB 12977
  4282.       GOTO 11310
  4283. '
  4284. ' *  S - COMMAND FROM 5- USER MAINTENANCE OPTIONS (CHANGE USER SECURITY)
  4285. '
  4286. 11390 GOSUB 11395
  4287.       LSET ZSecLevel$ = MKI$(WasOF)
  4288.       GOTO 11290
  4289. 11395 ZOutTxt$ = "New sec level"
  4290.       GOSUB 12995
  4291.       CALL AllCaps (ZUserIn$(1))
  4292.       ZWasZ$ = ZUserIn$(1)
  4293.       WasOF = VAL(ZWasZ$)
  4294.       IF WasOF > ZUserSecLevel THEN _
  4295.          WasOF = ZUserSecLevel
  4296.       RETURN
  4297. '
  4298. ' *  R - COMMAND FROM 5- USER MAINTENANCE OPTIONS (RESET USER GRAPHICS)
  4299. '
  4300. 11400 ZWasA = CVI(MID$(ZUserOption$,9,2))
  4301.       ZWasA = ZWasA AND &HFAFF                ' TURN HIGHLIGHTING OFF
  4302.       LSET ZUserOption$ = LEFT$(ZUserOption$,5) + _
  4303.                            "0" + _
  4304.                            MID$(ZUserOption$,7,2) + _
  4305.                            MKI$(ZWasA) + _
  4306.                            MID$(ZUserOption$,11)
  4307.       GOTO 11290
  4308. '*****************************************************************
  4309. '* T - COMMAND FROM 5---CHANGE TIME LEFT   'Pe 02/03/90          *
  4310. '*****************************************************************
  4311. 11420  ZOutTxt$ = ZCrLf$ + "Enter NEW value for Time used, (ENTER) = No Change"
  4312.       GOSUB 12995
  4313.       IF ZWasQ = 0 THEN _
  4314.       GOTO 11290
  4315.       LSET ZElapsedTime$ = MKI$(VAL(ZUserIn$(1)))
  4316.       GOTO 11290
  4317. '
  4318. '******************** Time BAnk Changes ******************
  4319. '
  4320. 11430  ZOutTxt$ = ZCrLf$ + "Enter NEW value for Time BANK, (ENTER) = No Change"
  4321.       GOSUB 12995
  4322.       IF ZWasQ = 0 THEN _
  4323.       GOTO 11290
  4324.       ZBankTime = VAL(ZUserIn$(1))
  4325.       LSET ZBankTime$ = CHR$(ZBankTime)
  4326.       GOTO 11290
  4327. '
  4328. ' *  $ - COMMAND FROM 5 - USER MAINTENANCE (CHANGE REGISTRATION DATE)
  4329. '
  4330. 11450 ZOutTxt$ = "Enter new registration date (MM-DD-YY)"
  4331.       GOSUB 12995
  4332.       IF ZWasQ = 0 THEN _
  4333.          GOTO 11015
  4334. 11455 WorkDate$ = ZUserIn$(1)
  4335.       IF LEN(WorkDate$) < 8 THEN _
  4336.          GOTO 11450
  4337.       GOSUB 11470
  4338.       IF NOT ZOK THEN _
  4339.          GOTO 11450
  4340.       LSET ZUserOption$ = LEFT$(ZUserOption$,10) + _
  4341.                            ZRegDate$ + _
  4342.                            MID$(ZUserOption$,13)
  4343.       GOSUB 11480
  4344.       ZRegDate$ = RegDateHold$
  4345.       GOTO 11290
  4346. '
  4347. ' *  CALCULATE REGISTRATION DATES
  4348. '
  4349. 11470 IF LEN(WorkDate$) < 10 THEN _
  4350.          WorkDate$ = LEFT$(WorkDate$,6) + _
  4351.                       "19" + _
  4352.                       RIGHT$(WorkDate$,2)
  4353.       TodayRegYY = VAL(MID$(WorkDate$,7))
  4354.       TodayRegMM = VAL(LEFT$(WorkDate$,2))
  4355.       TodayRegDD = VAL(MID$(WorkDate$,4,2))
  4356.       ZOK = TodayRegYY > 1979 AND TodayRegMM > 0 AND _
  4357.            TodayRegMM < 13 AND TodayRegDD > 0 AND _
  4358.            TodayRegDD < 32
  4359.       IF ZOK THEN _
  4360.          CALL TwoByteDate (TodayRegYY,TodayRegMM,TodayRegDD,ZRegDate$)
  4361.       RETURN
  4362. 11480 WasX$ = MID$(ZUserOption$,11,2)
  4363.       IF CVI(WasX$) <> 0 THEN _
  4364.          ZRegDate$ = WasX$ : _
  4365.       ELSE GOSUB 11482
  4366.       CALL UnPackDate (ZRegDate$,UserRegYY,UserRegMM,UserRegDD,RegDisplayDate$)
  4367.       IF CVI(WasX$) = 0 THEN _
  4368.          RegDisplayDate$ = "00-00-00"
  4369.       RETURN
  4370. 11482 WorkDate$ = DATE$
  4371.       GOTO 11470
  4372. '
  4373. ' *  X - COMMAND FROM 5 - USER MAINTENANCE (CHANGE XFER COUNTERS)             *
  4374. '
  4375. 11490 CALL QuickTPut1 ("[ENTER] leaves unchanged")
  4376.       ZOutTxt$ = "Upload file total"
  4377.       GOSUB 12995
  4378.       IF LEN(ZUserIn$(1)) > 0 THEN _
  4379.          LSET ZUserUplds$ = MKI$(VAL(ZUserIn$(1)))
  4380.       ZOutTxt$ = "Upload BYTE total"
  4381.       GOSUB 12995
  4382.       IF LEN(ZUserIn$(1)) > 0 THEN _
  4383.          LSET ZULBytes$ = MKS$(VAL(ZUserIn$(1)))
  4384.       ZOutTxt$ = "Download file total"
  4385.       GOSUB 12995
  4386.       IF LEN(ZUserIn$(1)) > 0 THEN _
  4387.          LSET ZUserDnlds$ = MKI$(VAL(ZUserIn$(1)))
  4388.       ZOutTxt$ = "Download BYTE total"
  4389.       GOSUB 12995
  4390.       IF LEN(ZUserIn$(1)) > 0 THEN _
  4391.          LSET ZDlBytes$ = MKS$(VAL(ZUserIn$(1)))
  4392.       ZOutTxt$ = "Files downloaded TODAY"
  4393.       GOSUB 12995
  4394.       IF LEN(ZUserIn$(1)) > 0 THEN _
  4395.          LSET ZTodayDl$ = MKS$(VAL(ZUserIn$(1)))
  4396.       ZOutTxt$ = "Bytes downloaded TODAY"
  4397.       GOSUB 12995
  4398.       IF LEN(ZUserIn$(1)) > 0 THEN _
  4399.          LSET ZTodayBytes$ = MKS$(VAL(ZUserIn$(1)))
  4400.       GOTO 11290
  4401. '
  4402. ' *  ALLOW USERS TO ANSWER A "QUESTIONNAIRE" BASED ON THE RBBS-PC SCRIPT
  4403. '
  4404. 11520 CALL AskUsers                        ' Bh BETTER FIX THIS
  4405.       IF NOT ZOK THEN _
  4406.          RETURN
  4407.       IF ZAdjustedSecurity THEN _
  4408.          GOSUB 12989 : _
  4409.          LSET ZSecLevel$ = MKI$(ZUserSecLevel) : _
  4410.          GOSUB 9440 : _
  4411.          GOSUB 12991 : _
  4412.          CALL SetPrompt : _
  4413.          CALL XferType (2,ZTrue) : _
  4414.          GOSUB 5135
  4415.       REDIM ZOutTxt$(ZMsgDim)
  4416.       IF ZSubParm = -1 THEN _
  4417.          RETURN 10595
  4418.       ZOK = ZTrue
  4419.       RETURN
  4420. '
  4421. ' *  A - COMMAND FROM 5- USER MAINTENANCE OPTIONS (ADD USER)
  4422. '
  4423. 12300 WasA1$ = ""
  4424.       Attempts = 0
  4425.       UserSecLevelSave = ZUserSecLevel
  4426.       FirstNameSave$ = ZFirstName$
  4427.       LastNameSave$ = ZLastName$
  4428.       ActiveUserNameSave$ = ZActiveUserName$
  4429.       CityStateSave$ = ZWasCI$
  4430.       HashValueSave$ = HashValue$
  4431.       IndivValueSave$ = IndivValue$
  4432.       GOSUB 12500
  4433.       GOSUB 12840
  4434.       GOSUB 12850
  4435.       GOSUB 12598
  4436.       IF ZUserFileIndex = 0 THEN _
  4437.          GOSUB 12984 : _
  4438.          GOTO 12330
  4439.       IF Found THEN _
  4440.          WasD$ = "User already exists" : _
  4441.          GOSUB 1315 : _
  4442.          GOSUB 12984 : _
  4443.          GOTO 12330
  4444. 12310 GOSUB 12630
  4445.       GOSUB 12800
  4446.       GOSUB 11395
  4447.       ZTempSecLevel = WasOF
  4448.       GOSUB 12900
  4449.       LSET ZLastDateTimeOn$ = ZCurDate$ + _
  4450.                                 " " + _
  4451.                                 ZTimeLoggedOn$
  4452.       GOSUB 12960
  4453.       CALL AllCaps (ZUserIn$)
  4454.       LSET ZCityState$ = ZUserIn$
  4455.       LSET ZElapsedTime$ = MKI$(0)
  4456.       IF ZStartHash > 1 THEN _
  4457.          MID$(ZUserRecord$,ZStartHash,ZLenHash) = HashValue$
  4458.       IF ZStartIndiv > 1 THEN _
  4459.          MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = IndivValue$
  4460.       GOSUB 9440
  4461. 12320 GOSUB 12991
  4462. 12330 ZUserSecLevel = UserSecLevelSave
  4463.       ZFirstName$ = FirstNameSave$
  4464.       ZLastName$ = LastNameSave$
  4465.       ZActiveUserName$ = ActiveUserNameSave$
  4466.       ZWasCI$ = CityStateSave$
  4467.       HashValue$ = HashValueSave$
  4468.       IndivValue$ = IndivValueSave$
  4469.       ZUserFileIndex = WasTU
  4470.       LSET ZUserRecord$ = UserRecordHold$
  4471.       GOTO 11001
  4472. '
  4473. ' *  GET USER First AND Last NAMES
  4474. '
  4475. 12500 IF Attempts > 5 THEN _
  4476.          ZFF = ZTrue : _
  4477.          RETURN
  4478. 12510 GOSUB 12700
  4479.       Attempts = Attempts + 1
  4480.       ZOutTxt$ = WasA1$ + _
  4481.            ZFirstNamePrompt$
  4482.       CALL SkipLine (1)
  4483.       ZLogonActive = ZTrue
  4484.       GOSUB 12555
  4485.       ZLogonActive = ZFalse
  4486.       CALL Trim (ZWasZ$)
  4487.       ZFirstName$ = ZWasZ$
  4488. 12530 ZOutTxt$ = WasA1$ + _
  4489.            ZLastNamePrompt$
  4490.       ZParseOff = ZTrue
  4491.       GOSUB 12555
  4492. 12540 CALL Trim (ZWasZ$)
  4493.       ZLastName$ = ZWasZ$
  4494.       IF LEN(ZLastName$) < 2 THEN _
  4495.          IF LEN(ZFirstName$) > 2 THEN _
  4496.             GOTO 12500
  4497.       IF (LEN(ZFirstName$) + LEN(ZLastName$)) > 30 THEN _
  4498.          GOTO 12500
  4499.       IF UserSecLevelSave < ZSysopSecLevel THEN _
  4500.          IF (LEN(ZFirstName$) < 2 OR LEN(ZLastName$) < 2) THEN _
  4501.             GOTO 12500 _
  4502.          ELSE IF LEFT$(ZFirstName$,1)=" " OR LEFT$(ZLastName$,1)=" " THEN _
  4503.                  GOTO 12500
  4504. 12550 ZActiveUserName$ = MID$(ZFirstName$ + " " + ZLastName$,1,31)
  4505.       IF HashIndiv > 1 THEN _
  4506.          IF ZWasQ < 3 THEN _
  4507.             GOSUB 12558 : _
  4508.             IF ZNo THEN _
  4509.                GOTO 12500
  4510.       ZWasZ$ = ZFirstName$
  4511.       RETURN
  4512. '
  4513. ' *  CHECK FOR NAMES NOT ALLOWED
  4514. '
  4515. 12555 GOSUB 12932
  4516.       IF ZWasQ = 0 THEN _
  4517.          RETURN 12500
  4518. 12556 ZWasZ$ = ZUserIn$(ZAnsIndex)
  4519. 12557 CALL AllCaps (ZWasZ$)
  4520.       CALL RemNonAlf (ZWasZ$,31,91)
  4521.       RETURN
  4522. 12558 ZOutTxt$ = "Are you '" + _
  4523.            ZActiveUserName$ + _
  4524.            "' ([Y],N)"
  4525.       GOSUB 12995
  4526.       RETURN
  4527. 12570 Found = ZFalse
  4528.       CALL OpenWork (2,ZTrashcanFile$)
  4529.       IF ZErrCode = 53 THEN _
  4530.          GOTO 710
  4531. 12580 IF EOF(2) THEN _
  4532.          RETURN
  4533.       INPUT #2,InvalidName$
  4534.       IF ZWasZ$ <> InvalidName$ THEN _
  4535.          GOTO 12580
  4536.       Found = ZTrue
  4537.       RETURN
  4538. 12595 CALL QuickTPut1 ("Name not valid here. Call recorded")
  4539.       CALL UpdtCalr ("Name violation: "+ZActiveUserName$,1)
  4540.       GOTO 10621
  4541. '
  4542. ' *  COMMON SEARCH USER FILE ROUTINE
  4543. '
  4544. 12598 TempHashValue$ = HashValue$
  4545.       TempIndivValue$ = IndivValue$
  4546. 12600 GOSUB 4910
  4547.       GOSUB 12988
  4548.       IF ZInConfMenu THEN _
  4549.          IF NOT ZPrivateDoor THEN _
  4550.             CALL QuickTPut1 ("Checking Users...")
  4551. 12605 CALL OpenUser (HighestUserRecord)
  4552.       GOSUB 9450
  4553.       CALL FindUser (TempHashValue$,TempIndivValue$,ZStartHash,ZLenHash,_
  4554.                      ZStartIndiv,ZLenIndiv,HighestUserRecord,Found,_
  4555.                      ZUserFileIndex,ZWasSL)
  4556.      IF Found THEN _
  4557.         RETURN
  4558.      IF CurUserCount < (HighestUserRecord-1)*.95 THEN _
  4559.         RETURN
  4560.      ZOutTxt$ = "No room for new users in " + ZConfName$
  4561.      CALL UpdtCalr (ZOutTxt$,2)
  4562.      IF ZActiveUserFile$ <> ZMainUserFile$ THEN _
  4563.         ZUserFileIndex = 0 : _
  4564.         RETURN
  4565.       IF ZRememberNewUsers AND NOT ZSurviveNoUserRoom THEN _
  4566.          GOSUB 1397
  4567.       ZUserFileIndex = 0
  4568.       IF ZSurviveNoUserRoom THEN _
  4569.          ZRememberNewUsers = ZFalse
  4570.       RETURN
  4571. '
  4572. ' *  AUGMENT USER COUNT, LOCK 4 REC BLOCK IN USER, UNLOCK FILES
  4573. '
  4574. 12630 GOSUB 23000
  4575.       CurUserCount = CurUserCount + (ZWasSL = 0) * ZRememberNewUsers
  4576. 12632 GOSUB 24000
  4577.       GOSUB 12985
  4578.       IF ZRememberNewUsers THEN _
  4579.          GOSUB 12989
  4580.       GOSUB 12990
  4581.       RETURN
  4582. '
  4583. ' *  INFORM USER OF WHAT CONFERENCE USER FILE HE IS VIEWING
  4584. '
  4585. 12700 IF ZConfMode THEN _
  4586.          ZOutTxt$ = "Users of " + _
  4587.               ZConfName$ + _
  4588.               ":" : _
  4589.          GOSUB 12979
  4590.       RETURN
  4591. '
  4592. ' *  GET PASSWORD FROM NEWUSER
  4593. '
  4594. 12800 CALL NewPassword ("Enter PASSWORD you'll use to logon again",ZFalse)
  4595.       IF ZSubParm < 0 THEN _
  4596.          GOTO 202
  4597.       IF UserSecLevelSave < ZSysopSecLevel THEN _
  4598.          IF ZUserIn$ = SPACE$(LEN(ZUserIn$)) THEN _
  4599.             GOTO 12800
  4600.       LSET ZPswd$ = ZWasZ$
  4601.       RETURN
  4602. '
  4603. ' *  GET HASH VALUE FOR CURRENT USER TO LOOK UP IN THE USER'S FILE
  4604. '
  4605. 12840 IF ZStartHash = 1 THEN _
  4606.          HashValue$ = ZActiveUserName$ : _
  4607.          RETURN
  4608.       WasX$ = WasA1$ + _
  4609.            ZPromptHash$
  4610.       CALL UntilRight (WasX$,HashValue$,2,ZLenHash)
  4611.       RETURN
  4612. '
  4613. ' *  GET FIELD TO INDIVIDUATE ONE USER FROM ANOTHER (NAME FIELD IS DEFAULT)
  4614. '
  4615. 12850 IF ZStartIndiv < 1 THEN _
  4616.          RETURN
  4617.       IF ZStartIndiv = 1 THEN _
  4618.          IndivValue$ = ZActiveUserName$ : _
  4619.          RETURN
  4620.       WasX$ = WasA1$ + _
  4621.            ZPromptIndiv$
  4622.       CALL UntilRight (WasX$,IndivValue$,2,ZLenIndiv)
  4623.       RETURN
  4624. '
  4625. ' *  SET NEWUSER DEFAULTS
  4626. '
  4627. 12900 LSET ZUserName$ = ZActiveUserName$
  4628.       LSET ZUserOption$ = MKI$(0) + _
  4629.                            MKI$(0) + _
  4630.                            " 0" + _
  4631.                            MKI$(64) + _
  4632.                            MKI$(16) + _
  4633.                            MKI$(0) + _
  4634.                            CHR$(23) + _
  4635.                            ZDefaultEchoer$
  4636.       LSET ZUserDnlds$ = MKI$(0)
  4637.       LSET ZUserUplds$ = MKI$(0)               'Pe 02/16/90
  4638.       LSET ZTodayDl$ = MKS$(0)
  4639.       LSET ZTodayBytes$ = MKS$(0)
  4640.       LSET ZDlBytes$ = MKS$(0)
  4641.       LSET ZULBytes$ = MKS$(0)
  4642.       LSET ZSecLevel$ = MKI$(ZTempSecLevel)
  4643.       LSET ZElapsedTime$ = MKI$(0)
  4644.       LSET ZBankTime$ = CHR$(0)    'Pe 03/25/90
  4645.       RETURN
  4646. 12930 ZTurboKey = -ZTurboKeyUser
  4647. 12932 CALL PopCmdStack
  4648.       GOTO 12997
  4649. '
  4650. ' *  GET CITY AND STATE FROM NEWUSER
  4651. '
  4652. 12960 ZOutTxt$ = WasA1$ + _
  4653.            ZUserLocation$
  4654.       GOSUB 12995
  4655.       IF ZWasQ = 0 THEN _
  4656.          GOTO 12960
  4657.       IF ZUserIn$ = SPACE$(LEN(ZUserIn$)) THEN _
  4658.          GOTO 12960
  4659.       CALL AllCaps (ZUserIn$)
  4660.       LSET ZCityState$ = ZUserIn$
  4661.       ZWasCI$ = ZUserIn$
  4662.       RETURN
  4663. '
  4664. ' *  S - COMMAND FROM 5 - USER MAINTENANCE OPTIONS (SCAN USERS)
  4665. '
  4666. 12962 WasX = 0
  4667.       ZFF = ZFalse
  4668.       ZMacroMin = 99
  4669.       ZOutTxt$ = "String to search"
  4670.       GOSUB 12998
  4671.       IF ZWasQ = 0 THEN _
  4672.          GOTO 11001
  4673.       CALL AllCaps (ZUserIn$)
  4674.       WasWK$ = ZUserIn$
  4675.       IF ScanFunction$ = "L" THEN _
  4676.          WasWK$ = "," + _
  4677.                STR$(VAL(WasWK$)) + _
  4678.                ","
  4679. 12963 GET 5,WasI
  4680.       GOSUB 12966
  4681.       WasX = INSTR(ScanField$,WasWK$)
  4682.       IF WasX > 0 THEN _
  4683.          GOTO 11015
  4684. 12965 WasI = WasI + 1
  4685.       IF WasI > HighestUserRecord THEN _
  4686.          LSET ZUserRecord$ = UserRecordHold$ : _
  4687.          GOTO 11001
  4688.       WasX = 0
  4689.       GOTO 12963
  4690. 12966 ZFF = INSTR("NCPLH",ScanFunction$)
  4691. 12967 ON ZFF GOTO 12968,12969,12970,12972,12971
  4692.       GOTO 11001
  4693. '
  4694. ' *  N - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR NAME)
  4695. '
  4696. 12968 ScanField$ = ZUserName$
  4697.       RETURN
  4698. '
  4699. ' *  C - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR CITY/ST)
  4700. '
  4701. 12969 ScanField$ = ZCityState$
  4702.       RETURN
  4703. '
  4704. ' *  P - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR PASSWORD)
  4705. '
  4706. 12970 ScanField$ = ZPswd$
  4707.       RETURN
  4708. '
  4709. ' *  H - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR HASH ID)
  4710. '
  4711. 12971 IF ZStartHash > 0 AND ZLenHash > 0 THEN _
  4712.          ScanField$ = MID$(ZUserRecord$,ZStartHash,ZLenHash)
  4713.       RETURN
  4714. '
  4715. ' *  L - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (SEARCH FOR LEVEL)
  4716. '
  4717. 12972 ScanField$ = "," + _
  4718.                     STR$(CVI(ZSecLevel$)) + _
  4719.                     ","
  4720.       RETURN
  4721. '
  4722. ' * CALLS INTO SEPARATELY COMPILED SUBROUTINES (RBBS-SUB)
  4723. '
  4724. '
  4725. ' * STANDARD ENTRY FOR RBBS-PC'S COMMON TERMINAL OUTPUT ROUTINE
  4726. '
  4727. 12975 ZSubParm = 1
  4728.       GOTO 12981
  4729. 12976 ZSubParm = 2
  4730.       GOTO 12981
  4731. 12977 ZSubParm = 3
  4732.       GOTO 12981
  4733. 12978 ZSubParm = 4
  4734.       GOTO 12981
  4735. 12979 ZSubParm = 5
  4736.       GOTO 12981
  4737. 12980 ZSubParm = 6
  4738. 12981 CALL TPut
  4739. 12983 IF ZSubParm < 0 THEN _
  4740.          GOTO 202
  4741.       IF ZSubParm = 8 THEN _
  4742.          GOSUB 12995
  4743.       RETURN
  4744. '
  4745. ' * STANDARD ENTRY FOR RBBS-PC'S FILE LOCKING WHEN RUNNING MULTIPLE RBBS-PC'S
  4746. '
  4747. 12984 ZSubParm = 1  ' LOCK USERS & MESSAGES
  4748.       GOTO 12994
  4749. 12985 ZSubParm = 2  ' UNLOCK MESSAGES AND FLUSH
  4750.       Flushed = ZTrue
  4751.       GOTO 12994
  4752. 12986 ZSubParm = 3  ' LOCK MESSAGES
  4753.       GOTO 12994
  4754. 12987 ZSubParm = 4  ' UNLOCK MESSAGES
  4755.       GOTO 12994
  4756. 12988 ZSubParm = 5  ' LOCK USERS
  4757.       GOTO 12994
  4758. 12989 ZSubParm = 6  ' LOCK USER BLOCK
  4759.       GOTO 12994
  4760. 12990 ZSubParm = 7  ' UNLOCK USERS
  4761.       GOTO 12994
  4762. 12991 ZSubParm = 8  ' UNLOCK USER BLOCK
  4763.       GOTO 12994
  4764. 12992 ZSubParm = 9  ' LOCK COMMENTS/UPLOAD DIR
  4765.       GOTO 12994
  4766. 12993 ZSubParm = 10 ' UNLOCK COMMENTS/UPLOAD DIR
  4767. 12994 CALL FileLock
  4768.       IF Flushed THEN _
  4769.          FIELD 1,128 AS ZMsgRec$ : _
  4770.          Flushed = ZFalse
  4771.       IF ZSubParm = -1 THEN _
  4772.          ZSubParm = -9 : _
  4773.          CALL FindFKey : _
  4774.          GOTO 202
  4775.       RETURN
  4776. '
  4777. ' * STANDARD ENTRY FOR RBBS-PC'S COMMON TERMINAL INPUT ROUTINE
  4778. '
  4779. 12995 GOSUB 12997
  4780.       ZSubParm = 1
  4781. 12996 CALL TGet
  4782. 12997 IF ZSubParm < 0 THEN _
  4783.          GOTO 202
  4784.       RETURN
  4785. 12998 ZOutTxt$ = ZOutTxt$ + _
  4786.            ZPressEnter$
  4787.       GOTO 12995
  4788. 12999 ZTurboKey = -ZTurboKeyUser
  4789.       GOTO 12995
  4790. '
  4791. ' *  MAIN SYSTEM ERROR TRAP - ALL ERRORS PASS THROUGH THIS ROUTINE
  4792. '
  4793. 13000 IF ZDebug THEN _
  4794.          ZOutTxt$ = "DEBUG Trap ERL=" + _
  4795.               STR$(ZWasEL) + _
  4796.               " ERR=" + _
  4797.               STR$(ZErrCode) : _
  4798.               CALL Printit(ZOutTxt$) : _
  4799.               WasD$ = ZOutTxt$ : _
  4800.               GOSUB 1315
  4801.       IF ZWasEL = 1905 AND ZErrCode = 63 THEN _
  4802.          CLOSE 1 : _
  4803.          KILL ZActiveMessageFile$ : _
  4804.          GOTO 5350
  4805.       IF ZWasEL = 4371 AND ZErrCode = 6 THEN _
  4806.          GOTO 1200
  4807.       IF ZWasEL =  4740 THEN _
  4808.          GOTO 4745
  4809.       IF ZWasEL =  5151 AND ZErrCode = 62 THEN _
  4810.          CALL UpdtCalr (ZPswdFile$ + " bad format!",2) : _
  4811.          GOTO 5160
  4812. 13500 CALL LogError
  4813.       CALL QuickTPut1 (ZCallersRecord$)
  4814.       GOTO 1200
  4815. '
  4816. ' * COMMON EXIT FROM RBBS-PC (I.E. "ABANDON ALL HOPE OH YE WHO ENTER HERE")
  4817. '
  4818. 13538 CALL UpdtCalr ("No calls.  Recycling.",1)
  4819.       GOTO 13549
  4820. 13540 IF ZLocalUser THEN _
  4821.          IF NOT ZLocalUserMode THEN _
  4822.             GOTO 13549
  4823. 13543 IF (NOT ZSysop) THEN _
  4824.          IF ((ZUserFileIndex = 0 AND ZRememberNewUsers) OR _
  4825.             ZNewUser = ZTrue) THEN _
  4826.             GOTO 13549
  4827. 13545 CALL UpdateC
  4828. 13549 GOSUB 13700
  4829.       IF ZLocalUser OR _
  4830.          ZModemOffHook THEN _
  4831.          GOTO 13555
  4832.       OUT ZModemCntlReg,INP(ZModemCntlReg) AND 254
  4833.       CALL DelayTime (ZDTRDropDelay)
  4834.       OUT ZModemCntlReg,INP(ZModemCntlReg) OR 1
  4835. 13553 CALL DelayTime (ZDTRDropDelay)
  4836.       CALL TakeOffHook
  4837. 13555 ZActiveMessageFile$ = ZOrigMsgFile$
  4838.       GOSUB 12986
  4839.       GOSUB 5344
  4840.       GET 1,ZNodeRecIndex
  4841.       MID$(ZMsgRec$,57,1) = "I"
  4842.       MID$(ZMsgRec$,40,2) = " 0"
  4843.       MID$(ZMsgRec$,72,2) = " 0"
  4844.       IF MID$(ZMsgRec$,101,2) = ZCarriageReturn$+ZCarriageReturn$ THEN _ ' KG030602
  4845.          MID$(ZMsgRec$,101,2) = " 0"                                 ' KG030602
  4846.       PUT 1,ZNodeRecIndex
  4847.       GOSUB 12985
  4848.       CLOSE 1,2,3,4,5
  4849.       IF ZRecycleToDos THEN _
  4850.          GOTO 203
  4851.       RUN 100
  4852. 13600 CLS
  4853.       LOCATE ,,0
  4854.       CALL PScrn (ZWasDF$ + " file not found/invalid.  Run CONFIG.")
  4855.       CALL DelayTime (3)
  4856.       GOTO 203
  4857. 13700 IF ZMsgFileLock THEN _
  4858.          GOSUB 12987
  4859. 13710 IF ZUserFileLock THEN _
  4860.          GOSUB 12990
  4861. 13720 IF ZUserBlockLock THEN _
  4862.          GOSUB 12991
  4863.       RETURN
  4864. '
  4865. ' *  C/R - COMMAND FROM 5 - USER MAINTENANCE SCAN FUNCTION (QUIT TO MAIN MENU)
  4866. '
  4867. 20093 LSET ZUserRecord$ = UserRecordHold$
  4868.       GOSUB 9500
  4869. 20095 RETURN 1200
  4870. '
  4871. ' *  V - COMMAND FROM FILES MENU (VIEW ARC CONTENTS)
  4872. '
  4873. 20140 CALL GetArc
  4874.       IF ZSubParm = -1 THEN _
  4875.          GOTO 13540
  4876.       IF ZDenyAccess THEN _
  4877.          GOTO 1386
  4878.       RETURN
  4879. '
  4880. ' * GO TO THE FILE SYSTEM TO LIST THE SYSOP'S COMMENTS
  4881. '
  4882. 20150 ZFileSysParm = 1
  4883.       GOTO 20200
  4884. '
  4885. ' * GO TO THE FILE SYSTEM TO LIST THE FILE DIRECTORIES
  4886. '
  4887. 20155 ZFileSysParm = 2
  4888.       GOTO 20200
  4889. '
  4890. ' * GO TO THE FILE SYSTEM TO DOWNLOAD FILES
  4891. '
  4892. 20160 ZFileSysParm = 3
  4893.       GOTO 20200
  4894. '
  4895. ' * GO TO THE FILE SYSTEM WHEN RETURNING FROM EXTERNAL PROTOCOLS
  4896. '
  4897. 20165 ZFileSysParm = 4
  4898.       GOTO 20200
  4899. '
  4900. ' * GO TO THE FILE SYSTEM TO UPLOAD FILES
  4901. '
  4902. 20170 ZFileSysParm = 5
  4903.       GOTO 20200
  4904. '
  4905. ' * GO TO THE FILE SYSTEM TO SCAN FILE SYSTEM DIRECTORIES
  4906. '
  4907. 20175 ZFileSysParm = 6
  4908.       GOTO 20200
  4909. '
  4910. ' * GO TO THE FILE SYSTEM TO HANDLE "PERSONAL" FILES
  4911. '
  4912. 20180 ZFileSysParm = 7
  4913.       GOTO 20200
  4914. '
  4915. ' * GO TO THE FILE SYSTEM TO LIST "NEW" FILES
  4916. '
  4917. 20185 ZFileSysParm = 8
  4918.       GOTO 20200
  4919. '
  4920. ' * RETURN TO THE FILE SYSTEM AFTER HANDLING EXTENDED FILE DESCRIPTIONS
  4921. '
  4922. 20190 ZFileSysParm = 9
  4923. 20200 CALL FileSystem
  4924.  IF ZDnldCompleted AND ZAutoEnd = 1 THEN _
  4925.                          GOTO 20235                   'AUTO Loggoff Mod
  4926.       ON ZFileSysParm GOTO 20205, _
  4927.                                 20210, _
  4928.                                 20215, _
  4929.                                 20220, _
  4930.                                 20225, _
  4931.                                 20230, _
  4932.                                 20235
  4933. 20205 RETURN
  4934. 20210 RETURN 202
  4935. 20215 RETURN 1200
  4936. 20220 RETURN 1380
  4937. 20225 ZSysopComment = ZTrue
  4938.       ZMaxMsgLines = ZMaxExtendedLines
  4939.       GOSUB 2008
  4940.       GOTO 20190
  4941. 20230 RETURN 10553
  4942. 20235 RETURN 10595
  4943. '
  4944. ' *  GET MESSAGE HEADER RECORD DATA
  4945. '
  4946. 23000 GET 1,1
  4947.       HighMsgNumber = VAL(LEFT$(ZMsgRec$,8))
  4948.       AutoAddSec   = CVI(MID$(ZMsgRec$,9,2))
  4949.       CallsToDate! = VAL(MID$(ZMsgRec$,11,10))
  4950.       CurUserCount = VAL(MID$(ZMsgRec$,57,5))
  4951.       FirstMsgRecord = VAL(MID$(ZMsgRec$,68,7))
  4952.       ZNextMsgRec = VAL(MID$(ZMsgRec$,75,7))
  4953.       HighestMsgRecord = VAL(MID$(ZMsgRec$,82,7))
  4954.       IF ZActiveMessageFile$ = ZOrigMsgFile$ THEN _
  4955.          NodesInSystem = VAL(MID$(ZMsgRec$,127))
  4956.       RETURN
  4957. 23100 GET 1,ZNextMsgRec
  4958.       IF MID$(ZMsgRec$,61,1) = ":" THEN _
  4959.          CALL CheckInt (MID$(ZMsgRec$,117,4)) : _
  4960.          IF ZErrCode = 0 AND (ZTestedIntValue > 1) AND (ZTestedIntValue < 100) THEN _
  4961.             WasY = ZTestedIntValue : _
  4962.             CALL CheckInt (MID$(ZMsgRec$,2,4)) : _
  4963.             IF ZErrCode = 0 AND ZTestedIntValue > HighMsgNumber THEN _
  4964.                HighMsgNumber = ZTestedIntValue : _
  4965.                ZNextMsgRec = ZNextMsgRec + WasY : _
  4966.                CALL QuickTPut1 ("Correcting Msg Header") : _
  4967.                MsgCorrected = ZTrue : _
  4968.                GOTO 23100
  4969.       RETURN
  4970. '
  4971. ' *  UPDATE MESSAGE HEADER RECORD DATA
  4972. '
  4973. 24000 MID$(ZMsgRec$,1,8) = STR$(HighMsgNumber)
  4974.       MID$(ZMsgRec$,11,10) = STR$(CallsToDate!)
  4975.       MID$(ZMsgRec$,57,5) = STR$(CurUserCount)
  4976.       MID$(ZMsgRec$,68,7) = STR$(FirstMsgRecord)
  4977.       MID$(ZMsgRec$,75,7) = STR$(ZNextMsgRec)
  4978.       MID$(ZMsgRec$,82,7) = STR$(HighestMsgRecord)
  4979.       PUT 1,1
  4980.       RETURN
  4981. '
  4982. ' * A - COMMAND FROM Library MENU (ARCHIVE A SELECTED Library DISK)
  4983. '
  4984. 30000 ZSubParm = 4
  4985. '      CALL Library
  4986.       IF ZSubParm = -1 THEN _
  4987.          RETURN 10595
  4988.       RETURN
  4989. '
  4990. ' * C - COMMAND FROM Library MENU (CHANGE TO A Library DISK)
  4991. '
  4992. 30100 ZSubParm = 2
  4993. '      CALL Library
  4994.       RETURN
  4995. '
  4996. ' * D - COMMAND FROM Library MENU (DOWNLOAD A DISK/FILE FROM Library)
  4997. '
  4998. 30200 IF ZTimeLock AND 2 AND NOT ZHasPrivDoor THEN _
  4999.          CALL TimeLock : _
  5000.          IF NOT ZOK THEN _
  5001.             RETURN
  5002.       IF ZLibDiskChar$ = "0000" THEN _
  5003.          CALL QuickTPut1 ("You must select a Library disk first!") : _
  5004.          RETURN
  5005.       ZSubParm = 3
  5006. '      CALL Library
  5007.       GOTO 20160
  5008. '
  5009. ' * CALCULATE TIME REMAINING FOR USER
  5010. '
  5011. 41000 CALL CheckTimeRemain (MinsRemaining)
  5012.       IF ZSubParm = -1 THEN _
  5013.          RETURN 10553
  5014.       RETURN
  5015. '
  5016. ' * SHOW USER CURRENT ACCESS LEVEL
  5017. '
  5018. 41070 ZOutTxt$ = "Granted access level" + _
  5019.            STR$(ZUserSecLevel) + _
  5020.            MID$(" (SYSOP)",1,-8 * (ZUserSecLevel >= ZSysopSecLevel))
  5021.       GOSUB 12975
  5022.       RETURN
  5023. '
  5024. ' * NULLS SET FOR NEW USERS
  5025. '
  5026. 42700 CALL SkipLine (1)
  5027.       CALL QuickTPut1 ("TurboKey: act on 1 char command without waiting for [ENTER]")
  5028.       ZOutTxt$ = "Want TurboKeys (Y/[N])"
  5029.       GOSUB 12999
  5030.       ZTurboKeyUser = NOT ZYes
  5031.       CALL Toggle (8)
  5032.       RETURN
  5033. '
  5034. ' *  F - COMMAND FROM UTILITY MENU (FILE Transfer DEFALUT MODE)
  5035. ' *  FILE Transfer DEFAULT SET FOR NEW USERS
  5036. '
  5037. 42800 ZFF = INSTR(ZDefaultXfer$,ZUserXferDefault$)
  5038.       IF ZFF = 0 THEN _
  5039.          ZFF = INSTR(ZInternalEquiv$,"N")
  5040.       CALL QuickTPut1 ("Current Protocol: "+MID$(ZDefaultXfer$,ZFF,1))
  5041. 42805 ZOutTxt$ = "Default "
  5042.       CALL XferType (3,ZExpertUser)
  5043.       IF ZSubParm = -1 THEN _
  5044.          RETURN 10595
  5045.       ZUserXferDefault$ = ZWasFT$
  5046. 42810 ZOutTxt$ = "Protocol: " + ZProtoPrompt$
  5047.       GOSUB 12979
  5048.       RETURN
  5049. '
  5050. ' *  C - COMMAND FROM UTILITY MENU (CHANGE CASE Toggle)
  5051. ' *  UPPER/LOWER CASE SET FOR NEW USERS
  5052. '
  5053. 42850 GOSUB 9525
  5054. 42851 ZOutTxt$ = "Change to R)BBS, C)aller's software" + _
  5055.            MID$(", I)ntermediate host",1,-20 * (ZHostEchoOn$ <> "")) + _
  5056.            ZPressEnterExpert$
  5057.       GOSUB 12930
  5058.       IF ZWasQ = 0 THEN _
  5059.          RETURN
  5060. 42852 ZWasZ$ = LEFT$(ZUserIn$(ZAnsIndex),1)
  5061.       CALL AllCaps (ZWasZ$)
  5062.       IF INSTR("ICR",ZWasZ$) = 0 THEN _
  5063.          GOTO 42851
  5064.       ZEchoer$ = ZWasZ$
  5065.       CALL SetEcho (ZEchoer$)
  5066.       GOSUB 9525
  5067.       RETURN
  5068. 42950 ZOutTxt$ = "CAN YOUR TERMINAL DISPLAY LOWER CASE ([Y]/N)"
  5069.       GOSUB 12995
  5070.       ZUpperCase = NOT ZNo
  5071.       CALL Toggle(3)
  5072.       RETURN
  5073. '
  5074. ' *  G - COMMAND FROM UTILITY MENU (GRAPHICS WANTED)
  5075. ' *  Graphic MENUS SELECTION SET FOR NEW USERS
  5076. '
  5077. ' 43000 ZPrevPUI$ = ""    'ANSIEd     ' Bh 110790
  5078. 43000 GOSUB 43005
  5079.       GOTO 43022
  5080. 43005 CALL AskGraphics
  5081.       IF ZSubParm = -1 THEN _
  5082.          RETURN 10595
  5083.       IF ZWasQ = 0 THEN _
  5084.          RETURN
  5085. 43020 ZOutTxt$ = "Text Graphics: " + _
  5086.            MID$("None AsciiColor",ZWasGR * 5 + 1,5)
  5087.       GOSUB 12979
  5088.       RETURN
  5089. ' 43022 ZPrevPUI$ = ""                   'ANSIEd    ' Bh 110790
  5090. 43022 IF ZEmphasizeOnDef$ = "" THEN _
  5091.          RETURN
  5092.       ZOutTxt$ = "Do you want Color prompts ([Y],N)"
  5093.       GOSUB 12999
  5094.       ZHiLiteOff = NOT ZNo
  5095.       CALL Toggle(5)
  5096.       RETURN
  5097. 43025 CALL Graphic (ZUserGraphicDefault$,ZFileName$)
  5098. '
  5099. ' *  DISPLAY NON-BREAKABLE TEXT FILES
  5100. '
  5101. 43027 ZStopInterrupts = ZTrue
  5102.       CALL BufFile (ZFileName$,WasX)
  5103.       CALL Carrier
  5104.       IF ZSubParm = -1 THEN _
  5105.          RETURN 10595
  5106.       ZStopInterrupts = ZFalse
  5107.       RETURN
  5108. '
  5109. ' * MAKE INPUT STRING HIDDEN (USE *'S TO ECHO INPUT)
  5110. '
  5111. 45010 ZHidden = ZTrue
  5112.       GOSUB 12995
  5113.       ZHidden = ZFalse
  5114.       RETURN
  5115. 46000 ZSubParm = 1
  5116.    ZOutTxt$ = "AutoLogOff Counter Active. Press [RETURN] to cancel"   ' Bh
  5117.      IF ZLocalUser THEN _
  5118.         GOTO 46050
  5119.          CALL AbortLogOff
  5120.            IF ZWasQ = 0  THEN _
  5121.             CALL QuickTPut("Log Off Aborted.......",1) : _
  5122.            ZAutoEnd = 0 : _
  5123.         RETURN 1205
  5124.       GetOut = ZTrue
  5125. 46050 RETURN 10597 
  5126.